Пример #1
0
 /**
  * @param Account $account
  */
 public function addAccount(Account $account)
 {
     $conn = $this->connect();
     // Reuse database if exists
     $databases = $conn->fetchArray("SHOW DATABASES WHERE `Database` = '{$account->getDatabase()}';");
     if (!is_array($databases) || !in_array($account->getDatabase(), $databases)) {
         $conn->exec("CREATE DATABASE IF NOT EXISTS`{$account->getDatabase()}` CHARACTER SET = 'utf8';");
     }
     // reuse username if exists
     $users = $conn->fetchArray("SELECT * FROM mysql.user WHERE User = '******';");
     if (!is_array($users) || !in_array($account->getUser(), $users)) {
         $conn->executeQuery("CREATE USER '{$account->getUser()}'@'%' IDENTIFIED BY ?;", array($account->getPassword()));
     } else {
         $conn->executeQuery("UPDATE mysql.user SET `Password` = PASSWORD(?) WHERE `User` = ?;", array($account->getPassword(), $account->getUser()));
     }
     $this->grantPrivileges($account);
     $conn->close();
 }
Пример #2
0
 /**
  * @param Account $account
  * @throws DBALException
  * @throws InvalidCredentialsException
  */
 public function addAccount(Account $account)
 {
     $this->logDebug("Adding Redshift account {$account->getUser()}", $account->getDebugData());
     $conn = $this->connect($account->getDatabase());
     // Reuse schema if exists
     $schemas = $conn->fetchArray("SELECT nspname FROM pg_namespace WHERE nspname = '{$account->getSchema()}';");
     if (!is_array($schemas) || !in_array($account->getSchema(), $schemas)) {
         $conn->exec("CREATE SCHEMA \"{$account->getSchema()}\";");
     }
     // reuse username if exists
     $users = $conn->fetchArray("SELECT * FROM pg_user WHERE usename = '{$account->getUser()}';");
     if (!is_array($users) || !in_array($account->getUser(), $users)) {
         $conn->exec("CREATE USER \"{$account->getUser()}\" WITH PASSWORD '{$account->getPassword()}';");
     } else {
         $conn->exec("ALTER USER \"{$account->getUser()}\" PASSWORD '{$account->getPassword()}';");
     }
     $conn->close();
 }
Пример #3
0
 /**
  * Get parameters for running a ECS task definition.
  *
  * @param string $taskId Task id (name:revision format).
  * @param string $imageName Name of the docker image to run.
  * @param string $token Temporary KBC Storage token.
  * @param string $exportConfig Configuration for exporting tables (serialized JSON)
  * @param string $script Transformation script to load to sandbox.
  * @param Account $account Account used for logging into the container.
  * @param string $runId
  * @return array
  */
 private function getRunTaskDefinition($taskId, $imageName, $token, $exportConfig, $script, Account $account, $runId)
 {
     /** @var Account\Docker $account */
     return ['cluster' => $this->getCluster(), 'overrides' => ['containerOverrides' => [['name' => $this->getSanitizedName($imageName) . '_sandbox_data', 'environment' => [['name' => 'KBC_TOKEN', 'value' => $token], ['name' => 'KBC_EXPORT_CONFIG', 'value' => $exportConfig], ['name' => 'KBC_RUNID', 'value' => $runId]]], ['name' => $this->getSanitizedName($imageName) . '_sandbox', 'environment' => [['name' => 'USER', 'value' => $account->getUser()], ['name' => 'PASSWORD', 'value' => $account->getPassword()], ['name' => 'SCRIPT', 'value' => $script]]]]], 'taskDefinition' => $taskId];
 }