コード例 #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);
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 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());
 }
コード例 #4
0
 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
ファイル: kFlowHelper.php プロジェクト: GElkayam/server
 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
ファイル: assetPeer.php プロジェクト: kubrickfr/server
 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;
 }