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()); }
public static function setUpBeforeClass() { self::$kernel = static::createKernel(); self::$kernel->boot(); self::$elasticClient = self::$kernel->getContainer()->get('syrup.elasticsearch.client'); self::$search = self::$kernel->getContainer()->get('syrup.elasticsearch.search'); self::$index = self::$kernel->getContainer()->get('syrup.elasticsearch.current_component_index'); self::$jobMapper = self::$kernel->getContainer()->get('syrup.elasticsearch.current_component_job_mapper'); self::$sapiClient = new SapiClient(['token' => self::$kernel->getContainer()->getParameter('storage_api.test.token'), 'url' => self::$kernel->getContainer()->getParameter('storage_api.test.url'), 'userAgent' => SYRUP_APP_NAME]); self::$encryptor = self::$kernel->getContainer()->get('syrup.encryptor'); // clear data $sapiData = self::$sapiClient->getLogData(); $projectId = $sapiData['owner']['id']; $jobs = self::$search->getJobs(['projectId' => $projectId, 'component' => SYRUP_APP_NAME]); foreach ($jobs as $job) { self::$elasticClient->delete(['index' => $job['_index'], 'type' => $job['_type'], 'id' => $job['id']]); } }
/** * Parallel jobs limit of KBC project, null if unlimited * * @param Client $storageApi * @return int|null */ public static function getParallelLimit(Client $storageApi) { $data = $storageApi->getLogData(); if (!empty($data['owner']['features'])) { foreach ($data['owner']['features'] as $feature) { $matches = array(); if (preg_match('/^syrup\\-jobs\\-limit\\-([0-9]+)$/ui', $feature, $matches)) { return (int) $matches[1]; } } } return null; }