def setUp(self): self.test_dir = os.path.join(tempfile.mkdtemp(), self.BASE_TEMP_DIR) services.register(ServiceName.AGENT_CONFIG, MagicMock()) self.vim_client = MagicMock() self.vim_client.delete_file.side_effect = self.patched_delete self.image_manager = ImageManager(self.vim_client, MagicMock()) self.vm_manager = MagicMock() self.image_sweeper = DatastoreImageSweeper(self.image_manager, self.DATASTORE_ID) self.deleted = False self.marker_unlinked = False # Create various image directories and empty vmdks image_id_1 = str(uuid.uuid4()) image_id_2 = str(uuid.uuid4()) image_id_3 = str(uuid.uuid4()) image_id_4 = str(uuid.uuid4()) self.image_id_1 = image_id_1 self.image_id_2 = image_id_2 self.image_id_3 = image_id_3 self.image_id_4 = image_id_4 dir1 = os.path.join(self.test_dir, "image_" + image_id_1) os.makedirs(dir1) dir2 = os.path.join(self.test_dir, "image_" + image_id_2) os.makedirs(dir2) dir3 = os.path.join(self.test_dir, "image_" + image_id_3) os.makedirs(dir3) dir4 = os.path.join(self.test_dir, "image_" + image_id_4) os.makedirs(dir4) self.marker_file_content_time = 0 self.timestamp_file_mod_time = 0 # Create a good image vmdk under image_id_1, also create a valid image marker file and a valid timestamp file vmdk_filename = image_id_1 + ".vmdk" open(os.path.join(dir1, vmdk_filename), 'w').close() timestamp_filename = os.path.join(dir1, self.IMAGE_TIMESTAMP_FILENAME) open(timestamp_filename, 'w').close() marker_filename = os.path.join(dir1, self.IMAGE_MARKER_FILENAME) open(marker_filename, 'w').close() # Create a good image vmdk under image_id_2, create timestamp but no image marker file, vmdk_filename = image_id_2 + ".vmdk" open(os.path.join(dir2, vmdk_filename), 'w').close() timestamp_filename = os.path.join(dir2, self.IMAGE_TIMESTAMP_FILENAME) open(timestamp_filename, 'w').close() # Create a good image vmdk under image_id_3, create image_marker file but no timestamp file vmdk_filename = image_id_3 + ".vmdk" open(os.path.join(dir3, vmdk_filename), 'w').close() marker_filename = os.path.join(dir3, self.IMAGE_MARKER_FILENAME) open(marker_filename, 'w').close() # Create a good image vmdk under image_id_4, create image_marker file, renamed timestamp file # but no timestamp file vmdk_filename = image_id_4 + ".vmdk" open(os.path.join(dir4, vmdk_filename), 'w').close() marker_filename = os.path.join(dir4, self.IMAGE_MARKER_FILENAME) open(marker_filename, 'w').close()
def setUp(self): self.test_dir = os.path.join(tempfile.mkdtemp(), self.BASE_TEMP_DIR) services.register(ServiceName.AGENT_CONFIG, MagicMock()) self.image_manager = ImageManager(MagicMock(), MagicMock()) self.vm_manager = MagicMock() self.image_sweeper = DatastoreImageSweeper(self.image_manager, self.DATASTORE_ID) self.image_sweeper._task_runner = MagicMock() self.image_sweeper._task_runner.is_stopped.return_value = False self.delete_count = 0 # Create various image directories and empty vmdks dir0 = os.path.join(self.test_dir, self.DATASTORE_ID, "image_") self.dir0 = dir0 # Image dir with correct timestamp file image_id_1 = str(uuid.uuid4()) dir1 = self.create_dir(image_id_1) open(os.path.join(dir1, self.IMAGE_TIMESTAMP_FILENAME), 'w').close() # Image dir without the correct timestamp file image_id_2 = str(uuid.uuid4()) dir2 = self.create_dir(image_id_2) # Image dir with correct timestamp file # and with tombstone file image_id_3 = str(uuid.uuid4()) dir3 = self.create_dir(image_id_3) open(os.path.join(dir3, self.IMAGE_TIMESTAMP_FILENAME), 'w').close() self.image_ids = ["", image_id_1, image_id_2, image_id_3] self.image_dirs = ["", dir1, dir2, dir3]
def setUp(self): self.image_manager = MagicMock() self.image_manager.delete_unused.side_effect = self.fake_delete_unused_images self.image_sweeper = DatastoreImageSweeper(self.image_manager, self.DATASTORE_ID) self.synchronizer = TestSynchronizer() self.timeout = self.TIMEOUT
def __init__(self, datastore_manager, image_manager, vm_manager): self.logger = logging.getLogger(__name__) self.datastore_manager = datastore_manager self.datastore_image_scanners = dict() self.datastore_image_sweepers = dict() for datastore_id in self.datastore_manager.get_datastore_ids(): self.logger.info("IMAGE SCANNER: adding datastore: %s" % datastore_id) self.datastore_image_scanners[datastore_id] = \ DatastoreImageScanner(image_manager, vm_manager, datastore_id) self.datastore_image_sweepers[datastore_id] = \ DatastoreImageSweeper(image_manager, datastore_id)
def setUp(self): self.test_dir = os.path.join(tempfile.mkdtemp(), self.BASE_TEMP_DIR) services.register(ServiceName.AGENT_CONFIG, MagicMock()) self.image_manager = ImageManager(MagicMock(), MagicMock()) self.vm_manager = MagicMock() self.image_sweeper = DatastoreImageSweeper(self.image_manager, self.DATASTORE_ID) self.delete_count = 0 # Create various image directories and empty vmdks image_id_1 = str(uuid.uuid4()) image_id_2 = str(uuid.uuid4()) image_id_3 = str(uuid.uuid4()) image_id_4 = "invalid_image_id" self.image_ids = ["*", image_id_1, image_id_2, image_id_3, image_id_4] dir1 = os.path.join(self.test_dir, "image_" + image_id_1) os.makedirs(dir1) dir2 = os.path.join(self.test_dir, "image_" + image_id_2) os.makedirs(dir2) dir3 = os.path.join(self.test_dir, "image_" + image_id_3) os.makedirs(dir3) dir4 = os.path.join(self.test_dir, "image_" + image_id_4) os.makedirs(dir4) # Create a vmdk under "im", since the image_id is not a valid uuid it should be skipped open(os.path.join(self.test_dir, "image_im.vmdk"), 'w').close() # Create a good image vmdk under image_id_1 but no image marker file, this should not be deleted vmdk_filename = image_id_1 + ".vmdk" open(os.path.join(dir1, vmdk_filename), 'w').close() # Create a good image vmdk under image_id_2, also create an unused image marker file, # image_id_2 should be deleted vmdk_filename = image_id_2 + ".vmdk" open(os.path.join(dir2, vmdk_filename), 'w').close() open(os.path.join(dir2, self.IMAGE_MARKER_FILENAME), 'w').close() # Create a marker file under dir3 but no vmdk file. It should be deleted as well open(os.path.join(dir3, self.IMAGE_MARKER_FILENAME), 'w').close() # Create a vmdk under an invalid image directory, also create a marker file. Since the image_id # is not valid it should not be deleted vmdk_filename = image_id_4 + ".vmdk" open(os.path.join(dir4, vmdk_filename), 'w').close() open(os.path.join(dir4, self.IMAGE_MARKER_FILENAME), 'w').close()