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); }