Merge branch 'develop' into feature/service-changes
This commit is contained in:
commit
9eb14614c2
20 changed files with 345 additions and 70 deletions
|
@ -56,13 +56,12 @@ class DatabaseRepository {
|
|||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
$db = new Models\Database;
|
||||
$db->fill([
|
||||
'server_id' => $server->id,
|
||||
'db_server' => $options['db_server'],
|
||||
'database' => $server->uuidShort . '_' . $options['database'],
|
||||
'database' => "s{$server->id}_{$options['database']}",
|
||||
'username' => $server->uuidShort . '_' . str_random(7),
|
||||
'remote' => $options['remote'],
|
||||
'password' => Crypt::encrypt(str_random(20))
|
||||
|
@ -90,16 +89,29 @@ class DatabaseRepository {
|
|||
|
||||
$capsule->setAsGlobal();
|
||||
|
||||
Capsule::statement('CREATE DATABASE ' . $db->database);
|
||||
Capsule::statement('CREATE USER \'' . $db->username . '\'@\'' . $db->remote . '\' IDENTIFIED BY \'' . Crypt::decrypt($db->password) . '\'');
|
||||
Capsule::statement('GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON ' . $db->database . '.* TO \'' . $db->username . '\'@\'' . $db->remote . '\'');
|
||||
Capsule::statement('FLUSH PRIVILEGES');
|
||||
|
||||
DB::commit();
|
||||
return true;
|
||||
} catch (\Exception $ex) {
|
||||
DB::rollback();
|
||||
throw $ex;
|
||||
DB::rollBack();
|
||||
throw new DisplayException('There was an error while connecting to the Database Host Server. Please check the error logs.', $ex);
|
||||
}
|
||||
|
||||
try {
|
||||
Capsule::statement('CREATE DATABASE `' . $db->database . '`');
|
||||
Capsule::statement('CREATE USER `' . $db->username . '`@`' . $db->remote . '` IDENTIFIED BY \'' . Crypt::decrypt($db->password) . '\'');
|
||||
Capsule::statement('GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON `' . $db->database . '`.* TO `' . $db->username . '`@`' . $db->remote . '`');
|
||||
Capsule::statement('FLUSH PRIVILEGES');
|
||||
DB::commit();
|
||||
} catch (\Exception $ex) {
|
||||
try {
|
||||
Capsule::statement('DROP DATABASE `' . $db->database . '`');
|
||||
Capsule::statement('DROP USER `' . $db->username . '`@`' . $db->remote . '`');
|
||||
} catch (\Exception $exi) {
|
||||
// ignore it, if it fails its probably
|
||||
// because we failed to ever make the DB
|
||||
// or the user on the system.
|
||||
} finally {
|
||||
DB::rollBack();
|
||||
throw $ex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -138,7 +150,7 @@ class DatabaseRepository {
|
|||
|
||||
$capsule->setAsGlobal();
|
||||
Capsule::statement(sprintf(
|
||||
'SET PASSWORD FOR \'%s\'@\'%s\' = PASSWORD(\'%s\')',
|
||||
'SET PASSWORD FOR `%s`@`%s` = PASSWORD(\'%s\')',
|
||||
$db->username,
|
||||
$db->remote,
|
||||
$password
|
||||
|
@ -182,8 +194,8 @@ class DatabaseRepository {
|
|||
|
||||
$capsule->setAsGlobal();
|
||||
|
||||
Capsule::statement('DROP USER \'' . $db->username . '\'@\'' . $db->remote . '\'');
|
||||
Capsule::statement('DROP DATABASE ' . $db->database);
|
||||
Capsule::statement('DROP USER `' . $db->username . '`@`' . $db->remote . '`');
|
||||
Capsule::statement('DROP DATABASE `' . $db->database . '`');
|
||||
|
||||
$db->delete();
|
||||
|
||||
|
@ -219,6 +231,11 @@ class DatabaseRepository {
|
|||
*/
|
||||
public function add(array $data)
|
||||
{
|
||||
|
||||
if (isset($data['host'])) {
|
||||
$data['host'] = gethostbyname($data['host']);
|
||||
}
|
||||
|
||||
$validator = Validator::make($data, [
|
||||
'name' => 'required|string|max:255',
|
||||
'host' => 'required|ip|unique:database_servers,host',
|
||||
|
|
|
@ -229,8 +229,30 @@ class NodeRepository {
|
|||
|
||||
public function delete($id)
|
||||
{
|
||||
// @TODO: add logic;
|
||||
return true;
|
||||
$node = Models\Node::findOrFail($id);
|
||||
if (Models\Server::where('node', $id)->count() > 0) {
|
||||
throw new DisplayException('You cannot delete a node with servers currently attached to it.');
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
// Unlink Database Servers
|
||||
Models\DatabaseServer::where('linked_node', $node->id)->update([
|
||||
'linked_node' => null,
|
||||
]);
|
||||
|
||||
// Delete Allocations
|
||||
Models\Allocation::where('node', $node->id)->delete();
|
||||
|
||||
// Delete Node
|
||||
$node->delete();
|
||||
|
||||
DB::commit();
|
||||
} catch (\Exception $ex) {
|
||||
DB::rollback();
|
||||
throw $ex;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Reference in a new issue