Пример #1
0
 /**
  * @param string $entryId
  * @param FileSync $object
  * @param int $fileSyncId
  * @param string $sourceFileUrl
  * @return BatchJob
  */
 public static function addFileSyncImportJob($entryId, FileSync $fileSync, $sourceFileUrl, BatchJob $parentJob = null, $fileSize = null)
 {
     $partnerId = $fileSync->getPartnerId();
     $fileSyncId = $fileSync->getId();
     $dc = $fileSync->getDc();
     KalturaLog::log(__METHOD__ . " entryId[{$entryId}], partnerId[{$partnerId}], fileSyncId[{$fileSyncId}], sourceFileUrl[{$sourceFileUrl}]");
     $fileSyncImportData = new kFileSyncImportJobData();
     $fileSyncImportData->setSourceUrl($sourceFileUrl);
     $fileSyncImportData->setFilesyncId($fileSyncId);
     $fileSyncImportData->setFileSize($fileSize);
     // tmpFilePath and destFilePath will be set later during get exlusive call on the target data center
     $batchJob = null;
     if ($parentJob) {
         $batchJob = $parentJob->createChild(BatchJobType::FILESYNC_IMPORT, null, true, $dc);
     } else {
         $batchJob = new BatchJob();
         $batchJob->setDc($dc);
         $batchJob->setEntryId($entryId);
         $batchJob->setPartnerId($partnerId);
     }
     $batchJob->setObjectId($fileSyncId);
     $batchJob->setObjectType(BatchJobObjectType::FILE_SYNC);
     //In case file sync is of type data and holds flavor asset than we need to check if its the source asset that is being synced and raise it sync priority
     if ($fileSync->getObjectType() == FileSyncObjectType::FLAVOR_ASSET && $fileSync->getObjectSubType() == entry::FILE_SYNC_ENTRY_SUB_TYPE_DATA && $fileSync->getFileType() == FileSync::FILE_SYNC_FILE_TYPE_FILE) {
         $assetdb = assetPeer::retrieveById($fileSync->getObjectId());
         if ($assetdb) {
             $isSourceAsset = $assetdb->getIsOriginal();
             if ($isSourceAsset) {
                 $fileSyncImportData->setIsSourceAsset(true);
             }
         }
     }
     KalturaLog::log("Creating Filesync Import job, with file sync id: {$fileSyncId} size: {$fileSize}");
     return kJobsManager::addJob($batchJob, $fileSyncImportData, BatchJobType::FILESYNC_IMPORT);
 }
 public function getEntryId(FileSync $fileSync)
 {
     if ($fileSync->getObjectType() == FileSyncObjectType::ENTRY) {
         return $fileSync->getObjectId();
     }
     if ($fileSync->getObjectType() == FileSyncObjectType::BATCHJOB) {
         $job = BatchJobPeer::retrieveByPK($fileSync->getObjectId());
         if ($job) {
             return $job->getEntryId();
         }
     }
     if ($fileSync->getObjectType() == FileSyncObjectType::FLAVOR_ASSET) {
         $flavor = flavorAssetPeer::retrieveById($fileSync->getObjectId());
         if ($flavor) {
             return $flavor->getEntryId();
         }
     }
     return null;
 }
 public function setJobData(StorageProfile $storage, FileSync $fileSync)
 {
     /* @var $storage KontikiStorageProfile */
     $this->setServerUrl($storage->getStorageUrl());
     $this->setServiceToken($storage->getServiceToken());
     if ($fileSync->getObjectType() != FileSyncObjectType::ASSET) {
         throw new kCoreException("Incompatible filesync type", kCoreException::INTERNAL_SERVER_ERROR);
     }
     $this->setContentMoid($fileSync->getFilePath());
 }
 public function setStorageExportJobData(StorageProfile $externalStorage, FileSync $fileSync, $srcFileSyncLocalPath, $force = false)
 {
     /* @var $externalStorage KontikiStorageProfile */
     $this->setServerUrl($externalStorage->getStorageUrl());
     $this->setServiceToken($externalStorage->getServiceToken());
     $this->setSrcFileSyncId($fileSync->getId());
     if ($fileSync->getObjectType() != FileSyncObjectType::ASSET) {
         throw new kCoreException("Incompatible filesync type", kCoreException::INTERNAL_SERVER_ERROR);
     }
     $this->setFlavorAssetId($fileSync->getObjectId());
 }
Пример #5
0
 /**
  * @param FileSync $object
  * @return bool true if should continue to the next consumer
  */
 private function addedFileSync(FileSync $object)
 {
     if (!$object instanceof FileSync || $object->getStatus() != FileSync::FILE_SYNC_STATUS_PENDING || $object->getFileType() != FileSync::FILE_SYNC_FILE_TYPE_FILE) {
         return true;
     }
     if ($object->getObjectType() != FileSyncObjectType::FLAVOR_ASSET) {
         return true;
     }
     $flavorAssetId = $object->getObjectId();
     $flavorAsset = flavorAssetPeer::retrieveById($flavorAssetId);
     if (!$flavorAsset || !$flavorAsset->getIsOriginal()) {
         return true;
     }
     if ($this->saveIfShouldScan($flavorAsset)) {
         // file sync belongs to a flavor asset in status pending and suits a virus scan profile
         return false;
         // stop all remaining consumers
     }
     return true;
 }
Пример #6
0
 private function deleteOldFileSyncVersions(FileSync $newFileSync)
 {
     KalturaLog::debug('Deleting old file_sync versions for [' . $newFileSync->getId() . ']');
     if (kConf::hasParam('num_of_old_file_sync_versions_to_keep')) {
         $keepCount = kConf::get('num_of_old_file_sync_versions_to_keep');
         if (!is_numeric($newFileSync->getVersion())) {
             return;
         }
         $intVersion = intval($newFileSync->getVersion());
         $c = new Criteria();
         $c->add(FileSyncPeer::OBJECT_ID, $newFileSync->getObjectId());
         $c->add(FileSyncPeer::OBJECT_TYPE, $newFileSync->getObjectType());
         $c->add(FileSyncPeer::OBJECT_SUB_TYPE, $newFileSync->getObjectSubType());
         $c->add(FileSyncPeer::STATUS, array(FileSync::FILE_SYNC_STATUS_PURGED, FileSync::FILE_SYNC_STATUS_DELETED), Criteria::NOT_IN);
         $c->setLimit(40);
         //we limit the number of files to delete in one run so there will be no out of memory issues
         $fileSyncs = FileSyncPeer::doSelect($c);
         foreach ($fileSyncs as $fileSync) {
             if (is_numeric($fileSync->getVersion())) {
                 $currentIntVersion = intval($fileSync->getVersion());
                 if ($intVersion - $keepCount > $currentIntVersion) {
                     $key = kFileSyncUtils::getKeyForFileSync($fileSync);
                     self::deleteSyncFileForKey($key);
                 }
             }
         }
     }
 }
 /**
  *
  * @param FileSync $key
  * @return ISyncableFile
  */
 public static function retrieveObjectForFileSync(FileSync $file_sync)
 {
     KalturaLog::log(__METHOD__ . " - FileSync id [" . $file_sync->getId() . "]");
     return kFileSyncObjectManager::retrieveObject($file_sync->getObjectType(), $file_sync->getObjectId());
 }
Пример #8
0
 private static function isAssetExportFinished(FileSync $fileSync, asset $asset)
 {
     $c = new Criteria();
     $c->addAnd(FileSyncPeer::OBJECT_ID, $fileSync->getObjectId());
     $c->addAnd(FileSyncPeer::OBJECT_TYPE, $fileSync->getObjectType());
     $c->addAnd(FileSyncPeer::VERSION, $fileSync->getVersion());
     $c->addAnd(FileSyncPeer::FILE_TYPE, FileSync::FILE_SYNC_FILE_TYPE_URL);
     $c->addAnd(FileSyncPeer::DC, $fileSync->getDc());
     $c->addAnd(FileSyncPeer::STATUS, Filesync::FILE_SYNC_STATUS_PENDING);
     $pendingFileSync = FileSyncPeer::doSelectOne($c);
     if ($pendingFileSync) {
         return false;
     } else {
         return true;
     }
 }
Пример #9
0
 public static function retrieveByFileSync(FileSync $fileSync)
 {
     if ($fileSync->getObjectType() != FileSyncObjectType::ASSET) {
         return null;
     }
     if ($fileSync->getObjectSubType() != asset::FILE_SYNC_ASSET_SUB_TYPE_ASSET && $fileSync->getObjectSubType() != asset::FILE_SYNC_ASSET_SUB_TYPE_ISM && $fileSync->getObjectSubType() != asset::FILE_SYNC_ASSET_SUB_TYPE_ISMC) {
         return null;
     }
     $asset = assetPeer::retrieveById($fileSync->getObjectId());
     return $asset;
 }