Esempio n. 1
0
 protected function convertJob(KalturaBatchJob $job, KalturaConvertJobData $data)
 {
     KalturaLog::info("Converting flavor job");
     // ASSUME:
     // 1. full input file path ($data->actualSrcFileSyncLocalPath)
     // 2. flavorParams ($data->flavorParams)
     // PROMISE
     // 1. full output file path ($data->destFileSyncLocalPath)
     // 2. full output log path
     // 3. in case of remote engine (almost done) - id/url to query result
     if ($job->executionAttempts > 1) {
         if (strlen($data->destFileSyncLocalPath) && file_exists($data->destFileSyncLocalPath)) {
             return $this->moveFile($job, $data);
         }
     }
     if ($this->taskConfig->params->isRemote || !strlen(trim($data->actualSrcFileSyncLocalPath))) {
         if (!strlen(trim($data->actualSrcFileSyncLocalPath))) {
             $data->actualSrcFileSyncLocalPath = $this->taskConfig->params->localFileRoot . DIRECTORY_SEPARATOR . basename($data->srcFileSyncRemoteUrl);
         }
         $err = null;
         if (!$this->distributedFileManager->getLocalPath($data->actualSrcFileSyncLocalPath, $data->srcFileSyncRemoteUrl, $err)) {
             if (!$err) {
                 $err = 'Failed to translate url to local path';
             }
             return $this->closeJob($job, KalturaBatchJobErrorTypes::APP, KalturaBatchJobAppErrors::REMOTE_FILE_NOT_FOUND, $err, KalturaBatchJobStatus::RETRY);
         }
     }
     if (!file_exists($data->actualSrcFileSyncLocalPath)) {
         return $this->closeJob($job, KalturaBatchJobErrorTypes::APP, KalturaBatchJobAppErrors::NFS_FILE_DOESNT_EXIST, "Source file {$data->actualSrcFileSyncLocalPath} does not exist", KalturaBatchJobStatus::RETRY);
     }
     if (!is_file($data->actualSrcFileSyncLocalPath)) {
         return $this->closeJob($job, KalturaBatchJobErrorTypes::APP, KalturaBatchJobAppErrors::NFS_FILE_DOESNT_EXIST, "Source file {$data->actualSrcFileSyncLocalPath} is not a file", KalturaBatchJobStatus::FAILED);
     }
     $data->logFileSyncLocalPath = "{$data->destFileSyncLocalPath}.log";
     $monitorFiles = array($data->logFileSyncLocalPath);
     $this->startMonitor($monitorFiles);
     $operator = $this->getOperator($data);
     try {
         $this->operationEngine->operate($operator, $data->actualSrcFileSyncLocalPath);
     } catch (KOperationEngineException $e) {
         if ($job->jobSubType == KalturaConversionEngineType::ENCODING_COM || $job->jobSubType == KalturaConversionEngineType::KALTURA_COM) {
             $log = $this->operationEngine->getLogData();
             if ($log && strlen($log)) {
                 $this->kClient->batch->logConversion($data->flavorAssetId, $log);
             }
         }
         $err = "engine [" . get_class($this->operationEngine) . "] converted failed: " . $e->getMessage();
         return $this->closeJob($job, KalturaBatchJobErrorTypes::APP, KalturaBatchJobAppErrors::CONVERSION_FAILED, $err, KalturaBatchJobStatus::FAILED);
     }
     $this->stopMonitor();
     if ($job->jobSubType == KalturaConversionEngineType::ENCODING_COM || $job->jobSubType == KalturaConversionEngineType::KALTURA_COM) {
         $msg = $this->operationEngine->getMessage();
         $msg = "engine [" . get_class($this->operationEngine) . "] converted successfully: {$msg}";
         return $this->closeJob($job, null, null, $msg, KalturaBatchJobStatus::ALMOST_DONE, $data);
     }
     $job = $this->updateJob($job, "engine [" . get_class($this->operationEngine) . "] converted successfully", KalturaBatchJobStatus::MOVEFILE, 90, $data);
     return $this->moveFile($job, $data);
 }