/**
  * @param entry $entry
  * @return array<FileSyncKey>
  */
 protected static function getEntrySyncKeys(entry $entry, StorageProfile $externalStorage)
 {
     $exportFileSyncsKeys = array();
     $exportFileSyncsKeys[] = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_DATA);
     $exportFileSyncsKeys[] = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISM);
     $exportFileSyncsKeys[] = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISMC);
     $flavorAssets = array();
     $flavorParamsIds = $externalStorage->getFlavorParamsIds();
     KalturaLog::log(__METHOD__ . " flavorParamsIds [{$flavorParamsIds}]");
     $relevantStatuses = array(asset::ASSET_STATUS_READY, asset::ASSET_STATUS_EXPORTING);
     if (is_null($flavorParamsIds) || !strlen(trim($flavorParamsIds))) {
         $flavorAssets = assetPeer::retrieveFlavorsByEntryIdAndStatus($entry->getId(), null, $relevantStatuses);
     } else {
         $flavorParamsArr = explode(',', $flavorParamsIds);
         KalturaLog::log(__METHOD__ . " flavorParamsIds count [" . count($flavorParamsArr) . "]");
         $flavorAssets = assetPeer::retrieveFlavorsByEntryIdAndStatus($entry->getId(), $flavorParamsArr, $relevantStatuses);
     }
     foreach ($flavorAssets as $flavorAsset) {
         if ($externalStorage->shouldExportFlavorAsset($flavorAsset)) {
             $exportFileSyncsKeys[] = $flavorAsset->getSyncKey(flavorAsset::FILE_SYNC_FLAVOR_ASSET_SUB_TYPE_ASSET);
         } else {
             KalturaLog::log('Flavor asset id [' . $flavorAsset->getId() . '] should not be exported');
         }
     }
     return $exportFileSyncsKeys;
 }
Example #2
0
 /**
  * @param flavorAsset $flavor
  * @param StorageProfile $externalStorage
  */
 public static function exportFlavorAsset(flavorAsset $flavor, StorageProfile $externalStorage)
 {
     if (!$externalStorage->shouldExportFlavorAsset($flavor)) {
         return;
     }
     $exporting = false;
     $keys = array($flavor->getSyncKey(flavorAsset::FILE_SYNC_FLAVOR_ASSET_SUB_TYPE_ASSET), $flavor->getSyncKey(flavorAsset::FILE_SYNC_ASSET_SUB_TYPE_ISM), $flavor->getSyncKey(flavorAsset::FILE_SYNC_ASSET_SUB_TYPE_ISMC));
     foreach ($keys as $key) {
         if ($externalStorage->shoudlExportFileSync($key)) {
             $exporting = self::export($flavor->getentry(), $externalStorage, $key, !$flavor->getIsOriginal());
         }
     }
     return $exporting;
 }
Example #3
0
 private function requiredToExportFlavor(StorageProfile $storage)
 {
     // check if storage profile should affect the asset ready status
     if ($storage->getReadyBehavior() != StorageProfileReadyBehavior::REQUIRED) {
         // current storage profile is not required for asset readiness - skipping
         return false;
     }
     // check if export should happen now or wait for another trigger
     if (!$storage->triggerFitsReadyAsset($this->getEntryId())) {
         KalturaLog::info('Asset id [' . $this->getId() . '] is not ready to export to profile [' . $storage->getId() . ']');
         return false;
     }
     // check if asset needs to be exported to the remote storage
     if (!$storage->shouldExportFlavorAsset($this, true)) {
         KalturaLog::info('Should not export asset id [' . $this->getId() . '] to profile [' . $storage->getId() . ']');
         return false;
     }
     $keys = array($this->getSyncKey(flavorAsset::FILE_SYNC_FLAVOR_ASSET_SUB_TYPE_ASSET), $this->getSyncKey(flavorAsset::FILE_SYNC_ASSET_SUB_TYPE_ISM), $this->getSyncKey(flavorAsset::FILE_SYNC_ASSET_SUB_TYPE_ISMC));
     foreach ($keys as $key) {
         if ($storage->shoudlExportFileSync($key)) {
             return true;
         }
     }
     foreach ($keys as $key) {
         // check if asset is currently being exported to the remote storage
         if ($storage->isPendingExport($key)) {
             KalturaLog::info('Asset id [' . $this->getId() . '] is currently being exported to profile [' . $storage->getId() . ']');
             return true;
         }
     }
     return false;
 }