protected function init($jobId) { $this->jobMapper = $this->getContainer()->get('syrup.elasticsearch.current_component_job_mapper'); // Get job from ES $this->job = $this->jobMapper->get($jobId); if ($this->job == null) { $this->logger->error("Job id '" . $jobId . "' not found."); return self::STATUS_ERROR; } // SAPI init /** @var EncryptorInterface $encryptor */ $encryptor = $this->getContainer()->get('syrup.encryptor'); $this->sapiClient = new SapiClient(['token' => $encryptor->decrypt($this->job->getToken()['token']), 'url' => $this->getContainer()->getParameter('storage_api.url'), 'userAgent' => $this->job->getComponent()]); $this->sapiClient->setRunId($this->job->getRunId()); /** @var \Keboola\Syrup\Service\StorageApi\StorageApiService $storageApiService */ $storageApiService = $this->getContainer()->get('syrup.storage_api'); $storageApiService->setClient($this->sapiClient); /** @var \Keboola\Syrup\Monolog\Processor\JobProcessor $logProcessor */ $logProcessor = $this->getContainer()->get('syrup.monolog.job_processor'); $logProcessor->setJob($this->job); /** @var \Keboola\Syrup\Monolog\Processor\SyslogProcessor $logProcessor */ $logProcessor = $this->getContainer()->get('syrup.monolog.syslog_processor'); $logProcessor->setRunId($this->job->getRunId()); $logProcessor->setTokenData($this->sapiClient->getLogData()); // Lock DB /** @var Connection $conn */ $conn = $this->getContainer()->get('doctrine.dbal.lock_connection'); $conn->exec('SET wait_timeout = 31536000;'); $this->lock = new Lock($conn, $this->job->getLockName()); }
protected function makeJob($parentRunId = null, $isV2 = false) { /** @var Encryptor $encryptor */ $encryptor = $this->httpClient->getContainer()->get('syrup.encryptor'); /** @var ObjectEncryptor $objectEncryptor */ $objectEncryptor = $this->httpClient->getContainer()->get('syrup.object_encryptor'); // create job $tokenData = $this->storageApiClient->verifyToken(); $componentName = 'queue'; $jobId = $this->storageApiClient->generateId(); $job = new Job($objectEncryptor); $job->setId($jobId); $job->setRunId(is_null($parentRunId) ? $this->storageApiClient->generateId() : $parentRunId . '.' . $this->storageApiClient->generateId()); $job->setCommand('run'); $job->setComponent($componentName); $job->setLockName('syrup-queue-test'); if ($parentRunId) { $job->setLockName($job->getLockName() . '-child'); } $job->setToken(['id' => $tokenData['id'], 'description' => $tokenData['description'], 'token' => $encryptor->encrypt($this->storageApiClient->getTokenString())]); $job->setStatus(Job::STATUS_WAITING); $job->setCreatedTime(date('c')); $job->setProject(['id' => $tokenData['owner']['id'], 'name' => $tokenData['owner']['name']]); if ($isV2) { $job->setAttribute('protocol', 'v2'); } return $job; }
private function assertJob(Job $job, $resJob) { $this->assertEquals($job->getId(), $resJob['id']); $this->assertEquals($job->getRunId(), $resJob['runId']); $this->assertEquals($job->getLockName(), $resJob['lockName']); $this->assertEquals($job->getProject()['id'], $resJob['project']['id']); $this->assertEquals($job->getProject()['name'], $resJob['project']['name']); $this->assertEquals($job->getToken()['id'], $resJob['token']['id']); $this->assertEquals($job->getToken()['description'], $resJob['token']['description']); $this->assertEquals($job->getToken()['token'], $resJob['token']['token']); $this->assertEquals($job->getComponent(), $resJob['component']); $this->assertEquals($job->getStatus(), $resJob['status']); }