Пример #1
0
 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)
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
 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)
Пример #6
0
    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