/** * @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(); }
/** * @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(); }
/** * 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]; }