Example #1
0
 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());
 }
Example #2
0
 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']]);
     }
 }
Example #3
0
 /**
  * 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;
 }