Merge branch 'develop'
# Conflicts: # public/js/app.js
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Jobs\Servers\CreateServer;
|
||||
@@ -38,7 +39,8 @@ class ServerController extends Controller
|
||||
|
||||
/* @var $server \App\Models\Server */
|
||||
$server = $request->user()->servers()->create([
|
||||
'name' => $request->input('name')
|
||||
'name' => $request->input('name'),
|
||||
'database_type' => $request->input('database_type', 'mysql')
|
||||
]);
|
||||
|
||||
$server->provider()->associate($provider);
|
||||
@@ -65,6 +67,10 @@ class ServerController extends Controller
|
||||
{
|
||||
$server = auth()->user()->servers()->findOrFail($id);
|
||||
|
||||
if ($server->status === Server::STATUS_BUSY) {
|
||||
return redirect()->back()->with('info', 'This server is currently busy, please check back later.');
|
||||
}
|
||||
|
||||
return inertia('Servers/Show', [
|
||||
'server' => $server,
|
||||
'sites' => $server->sites()->latest()->paginate(5, ['*'], 'sites_per_page'),
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Http\Requests;
|
||||
|
||||
use App\Models\Server;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class ServerRequest extends FormRequest
|
||||
{
|
||||
@@ -45,6 +46,11 @@ class ServerRequest extends FormRequest
|
||||
'required',
|
||||
'not_in:0',
|
||||
'exists:provider_plans,id'
|
||||
],
|
||||
'database_type' => [
|
||||
'required',
|
||||
'string',
|
||||
Rule::in(['mysql', 'mariadb', 'postgresql', 'postgresql13'])
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
@@ -17,21 +17,11 @@ class CreateServer implements ShouldQueue
|
||||
public $server;
|
||||
public $tries = 1;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @param Server $server
|
||||
*/
|
||||
public function __construct(Server $server)
|
||||
{
|
||||
$this->server = $server;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$ploiServer = $this->getPloi()->server()->create(
|
||||
@@ -39,12 +29,14 @@ class CreateServer implements ShouldQueue
|
||||
$this->server->provider->ploi_id,
|
||||
$this->server->providerRegion->region_id,
|
||||
$this->server->providerPlan->plan_id,
|
||||
'server',
|
||||
$this->server->database_type
|
||||
);
|
||||
|
||||
$this->server->ploi_id = $ploiServer->id;
|
||||
$this->server->save();
|
||||
|
||||
// Lets fetch the status after 5 minutes
|
||||
// Let's fetch the status after 5 minutes
|
||||
dispatch(new FetchServerStatus($this->server))->delay(now()->addMinutes(5));
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,8 @@ class Server extends Model
|
||||
'internal_ip',
|
||||
'ssh_port',
|
||||
'maximum_sites',
|
||||
'available_php_versions'
|
||||
'available_php_versions',
|
||||
'database_type'
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
|
||||
@@ -63,7 +63,11 @@ class Server extends Resource
|
||||
string $name,
|
||||
$provider,
|
||||
$region,
|
||||
$plan
|
||||
$plan,
|
||||
$type = 'server',
|
||||
$databaseType = 'mysql',
|
||||
$webserverType = 'nginx',
|
||||
$phpVersion = '7.4'
|
||||
): stdClass {
|
||||
|
||||
// Remove the id
|
||||
@@ -76,10 +80,10 @@ class Server extends Resource
|
||||
'plan' => $plan,
|
||||
'region' => $region,
|
||||
'credential' => $provider,
|
||||
'type' => 'server',
|
||||
'database_type' => 'mysql',
|
||||
'webserver_type' => 'nginx',
|
||||
'php_version' => '7.4'
|
||||
'type' => $type,
|
||||
'database_type' => $databaseType,
|
||||
'webserver_type' => $webserverType,
|
||||
'php_version' => $phpVersion
|
||||
]),
|
||||
];
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
"fruitcake/laravel-cors": "^1.0",
|
||||
"guzzlehttp/guzzle": "^6.2|^7.0.1",
|
||||
"inertiajs/inertia-laravel": "^v0.4.3",
|
||||
"laravel/cashier": "^12.3",
|
||||
"laravel/framework": "^8.4",
|
||||
"laravel/horizon": "^5.0",
|
||||
"laravel/cashier": "^12.16",
|
||||
"laravel/framework": "^v8.80.0",
|
||||
"laravel/horizon": "^5.8",
|
||||
"laravel/tinker": "^2.0",
|
||||
"laravel/ui": "^2.1|^3.3.0",
|
||||
"league/glide": "^1.6",
|
||||
|
||||
672
composer.lock
generated
672
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AddColumnsToServersTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('servers', function (Blueprint $table) {
|
||||
$table->after('available_php_versions', function (Blueprint $table) {
|
||||
$table->string('type')->default('server');
|
||||
$table->string('database_type')->default('mysql');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('servers', function (Blueprint $table) {
|
||||
$table->dropColumn('type', 'database_type');
|
||||
});
|
||||
}
|
||||
}
|
||||
5830
package-lock.json
generated
5830
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -19,7 +19,7 @@
|
||||
"axios": "^0.21.1",
|
||||
"balloon-css": "^1.2.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"laravel-mix": "^6.0.25",
|
||||
"laravel-mix": "^6.0.41",
|
||||
"lodash": "^4.17.15",
|
||||
"portal-vue": "^2.1.7",
|
||||
"postcss": "^8.4.5",
|
||||
@@ -30,7 +30,7 @@
|
||||
"v-click-outside": "^3.1.2",
|
||||
"vue": "^2.6.11",
|
||||
"vue-clipboard2": "^0.3.1",
|
||||
"vue-loader": "^15.9.6",
|
||||
"vue-loader": "^15.9.8",
|
||||
"vue-meta": "^2.4.0",
|
||||
"vue-template-compiler": "^2.6.11",
|
||||
"vuex": "^3.6.2"
|
||||
|
||||
27338
public/js/app.js
vendored
27338
public/js/app.js
vendored
File diff suppressed because one or more lines are too long
@@ -26,6 +26,14 @@
|
||||
<option :value="`${null}`">{{ __('Select random plan') }}</option>
|
||||
<option v-for="(name, id) in plans" :value="id">{{ name }}</option>
|
||||
</FormSelect>
|
||||
|
||||
<FormSelect :loading="loading" :errors="$page.props.errors.database_type" :label="__('Select database type')"
|
||||
v-model="form.database_type">
|
||||
<option value="mysql">{{ __('MySQL 5.7') }}</option>
|
||||
<option value="mariadb">{{ __('MariaDB') }}</option>
|
||||
<option value="postgresql">{{ __('PostgreSQL') }}</option>
|
||||
<option value="postgresql13">{{ __('PostgreSQL 13') }}</option>
|
||||
</FormSelect>
|
||||
</template>
|
||||
|
||||
<template #form-actions>
|
||||
@@ -71,7 +79,7 @@
|
||||
|
||||
<DropdownList :position="position" v-if="isOpen">
|
||||
<DropdownListItem :to="route('servers.show', server.id)">View</DropdownListItem>
|
||||
<DropdownListItemButton v-if="can('servers', 'delete')" class="text-danger"
|
||||
<DropdownListItemButton v-if="can('servers', 'delete')" class="!text-danger"
|
||||
@click="confirmDelete(server)">
|
||||
Delete
|
||||
</DropdownListItemButton>
|
||||
@@ -219,6 +227,7 @@ export default {
|
||||
provider: null,
|
||||
region: null,
|
||||
plan: null,
|
||||
database_type: 'mysql'
|
||||
},
|
||||
|
||||
providers: this.dataProviders,
|
||||
@@ -254,7 +263,7 @@ export default {
|
||||
},
|
||||
|
||||
poll() {
|
||||
this.$inertia.replace(this.route('servers.index'), {
|
||||
this.$inertia.get(this.route('servers.index'), {}, {
|
||||
only: ['servers'],
|
||||
preserveScroll: true,
|
||||
})
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
<DropdownList :position="position" v-if="isOpen">
|
||||
<DropdownListItem :to="route('sites.show', site.id)">{{ __('View') }}</DropdownListItem>
|
||||
<DropdownListItemButton v-if="can('sites', 'delete')" class="text-danger" @click="confirmDelete(site)">{{ __('Delete') }}</DropdownListItemButton>
|
||||
<DropdownListItemButton v-if="can('sites', 'delete')" class="!text-danger" @click="confirmDelete(site)">{{ __('Delete') }}</DropdownListItemButton>
|
||||
</DropdownList>
|
||||
</Dropdown>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user