public function getJobStatus($url, Elasticsearch\Job $job, Encryptor $encryptor) { $timeout = 2; return $this->get($url, array('config' => array('curl' => array(CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0)), 'headers' => array('X-StorageApi-Token' => $encryptor->decrypt($job->getToken()), 'X-KBC-RunId' => $job->getRunId(), 'X-User-Agent', KeboolaOrchestratorBundle::SYRUP_COMPONENT_NAME . " - JobExecutor"), 'timeout' => 60 * $timeout)); // handling curl errors // $request->getEmitter()->on('error', function (ErrorEvent $e) use ($timeout) { // $curlError = $e->getTransferInfo('curl_result'); // if ($curlError == 28) { // throw new Exception\JobRuntimeException(sprintf('Task polling timeout after %d minutes', $timeout)); // } // }); }
/** * @param Job $job * @param StorageApi\UniqueManager $uniqueGenerator * @return Elasticsearch\Job */ private function buildEsJob(Job $job, StorageApi\UniqueManager $uniqueGenerator) { //@FIXME replace with jobfactory https://github.com/keboola/syrup/wiki/Upgrade $jobId = $uniqueGenerator->generateId(); $runId = $uniqueGenerator->generateRunId($uniqueGenerator->getRunId()); $job->setId($jobId); $job->setRunId($runId); return new Elasticsearch\Job($this->objectEncryptor, ['id' => $jobId, 'lockName' => KeboolaOrchestratorBundle::SYRUP_COMPONENT_NAME . '-' . $job->getProjectId() . '-' . $job->getOrchestrationId(), 'runId' => $runId, 'nestingLevel' => 0, 'project' => ['id' => $job->getProjectId(), 'name' => $job->getTokenOwnerName()], 'token' => ['id' => $job->getTokenId(), 'description' => $job->getTokenDesc(), 'token' => $this->encryptToken($job->getToken())], 'component' => KeboolaOrchestratorBundle::SYRUP_COMPONENT_NAME, 'command' => 'run', 'params' => array('config' => $job->getConfig(), 'orchestration' => array('id' => $job->getOrchestrationId(), 'name' => $job->getOrchestrationName()), 'initializedBy' => $job->getInitializedBy(), 'initiator' => array('id' => $job->getInitiatorTokenId(), 'description' => $job->getInitiatorTokenDesc(), 'userAgent' => $job->getInitiatorUserAgent()), 'notificationsEmails' => $job->getNotificationsEmails(), 'tasks' => $job->getTasks()), 'process' => ['host' => gethostname(), 'pid' => posix_getpid()], 'createdTime' => $job->getCreatedTime()->format('c')]); }