def execute_task(self): try: self._ds_image_sweeper.set_state(DatastoreImageSweeper.State.IMAGE_SWEEP) deleted_images = self._delete_unused_images(self._ds_image_sweeper, os_datastore_root(self._ds_image_sweeper.datastore_id)) self._ds_image_sweeper.set_deleted_images(deleted_images) except Exception as e: self._logger.exception( "Exception in image sweeper thread, %s, ds_id : %s, state: %s, target images: %d, deleted images: %d" % (e, self._ds_image_sweeper.datastore_id, self._ds_image_sweeper.get_state(), len(self._ds_image_sweeper.get_target_images()), len(self._ds_image_sweeper.get_deleted_images()))) raise e finally: self._ds_image_sweeper.set_state(DatastoreImageSweeper.State.IDLE)
def get_images(self, datastore): """ Get image list from datastore :param datastore: datastore id :return: list of string, image id list """ image_ids = [] if not os.path.exists(os_datastore_root(datastore)): raise DatastoreNotFoundException() # image_folder is /vmfs/volumes/${datastore}/images_* for dir in list_top_level_directory(datastore, IMAGE_FOLDER_NAME_PREFIX): image_id = dir.split(COMPOND_PATH_SEPARATOR)[1] if self.check_image(image_id, datastore): image_ids.append(image_id) return image_ids
def get_datastore(self, disk_id): for datastore in self._ds_manager.get_datastore_ids(): disk = os_vmdk_path(datastore, disk_id) if os.path.isfile(disk): return datastore # Extra logging to help debug failures where host2 cannot find disk created by host1 on a shared datastore self._logger.error("get_disk_datastore failed: disk=%s, datastores=%s" % (disk_id, self._ds_manager.get_datastore_ids())) for datastore in self._ds_manager.get_datastore_ids(): p1 = os_datastore_root(datastore) p2 = os_datastore_path(datastore, compond_path_join(DISK_FOLDER_NAME_PREFIX, disk_id)) p3 = os_vmdk_path(datastore, disk_id) self._logger.error("get_disk_datastore check_path: %s:%s, %s:%s, %s:%s" % (p1, os.path.isdir(p1), p2, os.path.isdir(p2), p3, os.path.isfile(p3))) return None
def execute_task(self): try: self._ds_image_sweeper.set_state( DatastoreImageSweeper.State.IMAGE_SWEEP) deleted_images = self._delete_unused_images( self._ds_image_sweeper, os_datastore_root(self._ds_image_sweeper.datastore_id)) self._ds_image_sweeper.set_deleted_images(deleted_images) except Exception as e: self._logger.exception( "Exception in image sweeper thread, %s, ds_id : %s, state: %s, target images: %d, deleted images: %d" % (e, self._ds_image_sweeper.datastore_id, self._ds_image_sweeper.get_state(), len(self._ds_image_sweeper.get_target_images()), len(self._ds_image_sweeper.get_deleted_images()))) raise e finally: self._ds_image_sweeper.set_state(DatastoreImageSweeper.State.IDLE)
def get_datastore(self, disk_id): for datastore in self._ds_manager.get_datastore_ids(): disk = os_vmdk_path(datastore, disk_id) if os.path.isfile(disk): return datastore # Extra logging to help debug failures where host2 cannot find disk created by host1 on a shared datastore self._logger.error( "get_disk_datastore failed: disk=%s, datastores=%s" % (disk_id, self._ds_manager.get_datastore_ids())) for datastore in self._ds_manager.get_datastore_ids(): p1 = os_datastore_root(datastore) p2 = os_datastore_path( datastore, compond_path_join(DISK_FOLDER_NAME_PREFIX, disk_id)) p3 = os_vmdk_path(datastore, disk_id) self._logger.error( "get_disk_datastore check_path: %s:%s, %s:%s, %s:%s" % (p1, os.path.isdir(p1), p2, os.path.isdir(p2), p3, os.path.isfile(p3))) return None