/** * @param FileSyncKey $key * @return bool */ public static function shouldExport(FileSyncKey $key, StorageProfile $externalStorage) { KalturaLog::log(__METHOD__ . " - key [{$key}], externalStorage id[" . $externalStorage->getId() . "]"); list($kalturaFileSync, $local) = kFileSyncUtils::getReadyFileSyncForKey($key, false, false); if (!$kalturaFileSync) { KalturaLog::log(__METHOD__ . " key [{$key}] not found localy"); return false; } KalturaLog::log(__METHOD__ . " validating file size [" . $kalturaFileSync->getFileSize() . "] is between min [" . $externalStorage->getMinFileSize() . "] and max [" . $externalStorage->getMaxFileSize() . "]"); if ($externalStorage->getMaxFileSize() && $kalturaFileSync->getFileSize() > $externalStorage->getMaxFileSize()) { KalturaLog::log(__METHOD__ . " key [{$key}] file too big"); return false; } if ($externalStorage->getMinFileSize() && $kalturaFileSync->getFileSize() < $externalStorage->getMinFileSize()) { KalturaLog::log(__METHOD__ . " key [{$key}] file too small"); return false; } $storageFileSync = kFileSyncUtils::getReadyPendingExternalFileSyncForKey($key, $externalStorage->getId()); if ($storageFileSync) { KalturaLog::log(__METHOD__ . " key [{$key}] already exported or being exported"); return false; } return true; }
/** * Check if input key was already exported for this storage profile * * @param FileSyncKey $key */ public function isExported(FileSyncKey $key) { $storageFileSync = kFileSyncUtils::getReadyPendingExternalFileSyncForKey($key, $this->getId()); if ($storageFileSync) { KalturaLog::log(__METHOD__ . " key [{$key}] already exported or being exported"); return true; } else { return false; } }
/** * * add DeleteStorage job for key * * @param entry $entry * @param StorageProfile $profile * @param FileSyncKey $key */ protected static function delete(entry $entry, StorageProfile $profile, FileSyncKey $key) { $externalFileSync = kFileSyncUtils::getReadyPendingExternalFileSyncForKey($key, $profile->getId()); if (!$externalFileSync) { return; } $c = new Criteria(); $c->add(BatchJobPeer::OBJECT_ID, $externalFileSync->getId()); $c->add(BatchJobPeer::OBJECT_TYPE, BatchJobObjectType::FILE_SYNC); $c->add(BatchJobPeer::JOB_TYPE, BatchJobType::STORAGE_EXPORT); $c->add(BatchJobPeer::JOB_SUB_TYPE, $profile->getProtocol()); $c->add(BatchJobPeer::ENTRY_ID, $entry->getId()); $c->add(BatchJobPeer::STATUS, array(BatchJob::BATCHJOB_STATUS_RETRY, BatchJob::BATCHJOB_STATUS_PENDING), Criteria::IN); $exportJobs = BatchJobPeer::doSelect($c); if (!$exportJobs) { kJobsManager::addStorageDeleteJob(null, $entry->getId(), $profile, $externalFileSync); } else { foreach ($exportJobs as $exportJob) { kJobsManager::abortDbBatchJob($exportJob); } } }