)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"03eb7d216e28311ba572e799b716312605bcfa62","unresolved":false,"context_lines":[{"line_number":6734,"context_line":"                       \u0027max\u0027: CONF.maximum_instance_delete_attempts},"},{"line_number":6735,"context_line":"                      instance\u003dinstance)"},{"line_number":6736,"context_line":"            if attempts \u003c CONF.maximum_instance_delete_attempts:"},{"line_number":6737,"context_line":"                success \u003d self.driver.delete_instance_files(instance)"},{"line_number":6738,"context_line":""},{"line_number":6739,"context_line":"                instance.system_metadata[\u0027clean_attempts\u0027] \u003d str(attempts + 1)"},{"line_number":6740,"context_line":"                if success:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_578543ab","line":6737,"range":{"start_line":6737,"start_character":26,"end_line":6737,"end_character":69},"updated":"2016-10-17 17:26:39.000000000","message":"What if the instance is on shared storage here?","commit_id":"3c9b91f618eb0569161e6c1a1215a3cc4c064b0c"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"664a584b37910e727929cfbd4fe2e48370c97d9a","unresolved":false,"context_lines":[{"line_number":6734,"context_line":"                       \u0027max\u0027: CONF.maximum_instance_delete_attempts},"},{"line_number":6735,"context_line":"                      instance\u003dinstance)"},{"line_number":6736,"context_line":"            if attempts \u003c CONF.maximum_instance_delete_attempts:"},{"line_number":6737,"context_line":"                success \u003d self.driver.delete_instance_files(instance)"},{"line_number":6738,"context_line":""},{"line_number":6739,"context_line":"                instance.system_metadata[\u0027clean_attempts\u0027] \u003d str(attempts + 1)"},{"line_number":6740,"context_line":"                if success:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_0e4e4d96","line":6737,"range":{"start_line":6737,"start_character":26,"end_line":6737,"end_character":69},"in_reply_to":"fa6399be_578543ab","updated":"2016-10-17 20:52:32.000000000","message":"Well... nothing bad. Deleted only instances are processed here, see L6719.","commit_id":"3c9b91f618eb0569161e6c1a1215a3cc4c064b0c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"03eb7d216e28311ba572e799b716312605bcfa62","unresolved":false,"context_lines":[{"line_number":6776,"context_line":"                        # Delete instance files if not cleanup properly either"},{"line_number":6777,"context_line":"                        # from the source or destination compute nodes when"},{"line_number":6778,"context_line":"                        # the instance is deleted during resizing."},{"line_number":6779,"context_line":"                        self.driver.delete_instance_files(instance)"},{"line_number":6780,"context_line":"                        try:"},{"line_number":6781,"context_line":"                            migration.status \u003d \u0027failed\u0027"},{"line_number":6782,"context_line":"                            with migration.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_ba4be65e","line":6779,"range":{"start_line":6779,"start_character":24,"end_line":6779,"end_character":67},"updated":"2016-10-17 17:26:39.000000000","message":"And here.","commit_id":"3c9b91f618eb0569161e6c1a1215a3cc4c064b0c"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"664a584b37910e727929cfbd4fe2e48370c97d9a","unresolved":false,"context_lines":[{"line_number":6776,"context_line":"                        # Delete instance files if not cleanup properly either"},{"line_number":6777,"context_line":"                        # from the source or destination compute nodes when"},{"line_number":6778,"context_line":"                        # the instance is deleted during resizing."},{"line_number":6779,"context_line":"                        self.driver.delete_instance_files(instance)"},{"line_number":6780,"context_line":"                        try:"},{"line_number":6781,"context_line":"                            migration.status \u003d \u0027failed\u0027"},{"line_number":6782,"context_line":"                            with migration.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_916440e6","line":6779,"range":{"start_line":6779,"start_character":24,"end_line":6779,"end_character":67},"in_reply_to":"fa6399be_ba4be65e","updated":"2016-10-17 20:52:32.000000000","message":"The same. See L6765.","commit_id":"3c9b91f618eb0569161e6c1a1215a3cc4c064b0c"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"14ffc9860342d03c11e2ce34794992725e00ae66","unresolved":false,"context_lines":[{"line_number":944,"context_line":"            if CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027:"},{"line_number":945,"context_line":"                self._cleanup_rbd(instance)"},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"        if destroy_disks or delete_files:"},{"line_number":948,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":949,"context_line":"                                                        \u00270\u0027))"},{"line_number":950,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_0498f769","line":947,"range":{"start_line":947,"start_character":28,"end_line":947,"end_character":40},"updated":"2016-10-17 16:59:16.000000000","message":"I don\u0027t see anything checking for shared block storage in the compute manager to pass a different value for this method, but it looks like this is a change in behavior that doesn\u0027t account for shared block storage.","commit_id":"3c9b91f618eb0569161e6c1a1215a3cc4c064b0c"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"664a584b37910e727929cfbd4fe2e48370c97d9a","unresolved":false,"context_lines":[{"line_number":944,"context_line":"            if CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027:"},{"line_number":945,"context_line":"                self._cleanup_rbd(instance)"},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"        if destroy_disks or delete_files:"},{"line_number":948,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":949,"context_line":"                                                        \u00270\u0027))"},{"line_number":950,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_2ee6b1e8","line":947,"range":{"start_line":947,"start_character":28,"end_line":947,"end_character":40},"in_reply_to":"fa6399be_0498f769","updated":"2016-10-17 20:52:32.000000000","message":"There are two different types of usage cases: live migration and cold migration.\n\nFor cold migration see the first two changes in manager.py: destroy_disks variable is passed as delete_files argument. As the result destroy_disks value of a caller determines what will happen with the instance directory. The same is at the present, with no changes.\n\nFor live migration cases i\u0027ve used the fact that destroy is always called with migrate_data and if not shared path only. In this case destroy_disks came from migrate_data.is_shared_block_storage, in fact. For shared block storage destroy_disks is False, but is_shared_block_storage is True, and the code on left side deletes instance files.\n\nI.e. there is no difference between both versions for shared block storage: the result will be the same.","commit_id":"3c9b91f618eb0569161e6c1a1215a3cc4c064b0c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"14ffc9860342d03c11e2ce34794992725e00ae66","unresolved":false,"context_lines":[{"line_number":945,"context_line":"                self._cleanup_rbd(instance)"},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"        if destroy_disks or delete_files:"},{"line_number":948,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":949,"context_line":"                                                        \u00270\u0027))"},{"line_number":950,"context_line":"            success \u003d self.delete_instance_files(instance)"},{"line_number":951,"context_line":"            # NOTE(mriedem): This is used in the _run_pending_deletes periodic"},{"line_number":952,"context_line":"            # task in the compute manager. The tight coupling is not great..."},{"line_number":953,"context_line":"            instance.system_metadata[\u0027clean_attempts\u0027] \u003d str(attempts + 1)"},{"line_number":954,"context_line":"            if success:"},{"line_number":955,"context_line":"                instance.cleaned \u003d True"},{"line_number":956,"context_line":"            instance.save()"},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"        self._undefine_domain(instance)"},{"line_number":959,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_04347748","line":956,"range":{"start_line":948,"start_character":12,"end_line":956,"end_character":27},"updated":"2016-10-17 16:59:16.000000000","message":"Would it make more sense as a cleanup task to move this logic into the compute manager? Then you could stop passing migrate_data into destroy and cleanup methods.","commit_id":"3c9b91f618eb0569161e6c1a1215a3cc4c064b0c"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"664a584b37910e727929cfbd4fe2e48370c97d9a","unresolved":false,"context_lines":[{"line_number":945,"context_line":"                self._cleanup_rbd(instance)"},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"        if destroy_disks or delete_files:"},{"line_number":948,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":949,"context_line":"                                                        \u00270\u0027))"},{"line_number":950,"context_line":"            success \u003d self.delete_instance_files(instance)"},{"line_number":951,"context_line":"            # NOTE(mriedem): This is used in the _run_pending_deletes periodic"},{"line_number":952,"context_line":"            # task in the compute manager. The tight coupling is not great..."},{"line_number":953,"context_line":"            instance.system_metadata[\u0027clean_attempts\u0027] \u003d str(attempts + 1)"},{"line_number":954,"context_line":"            if success:"},{"line_number":955,"context_line":"                instance.cleaned \u003d True"},{"line_number":956,"context_line":"            instance.save()"},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"        self._undefine_domain(instance)"},{"line_number":959,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_2efdd16e","line":956,"range":{"start_line":948,"start_character":12,"end_line":956,"end_character":27},"in_reply_to":"fa6399be_04347748","updated":"2016-10-17 20:52:32.000000000","message":"will think about it","commit_id":"3c9b91f618eb0569161e6c1a1215a3cc4c064b0c"}]}
