Add base support for definining the number of backups that can be created for a server

This commit is contained in:
Dane Everitt 2020-04-26 12:12:29 -07:00
parent bed51b5871
commit f1c3762f4d
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
10 changed files with 65 additions and 23 deletions

View file

@ -263,7 +263,7 @@ class ServersController extends Controller
$this->buildModificationService->handle($server, $request->only([
'allocation_id', 'add_allocations', 'remove_allocations',
'memory', 'swap', 'io', 'cpu', 'threads', 'disk',
'database_limit', 'allocation_limit', 'oom_disabled',
'database_limit', 'allocation_limit', 'backup_limit', 'oom_disabled',
]));
$this->alert->success(trans('admin/server.alerts.build_updated'))->flash();

View file

@ -2,7 +2,6 @@
namespace Pterodactyl\Models;
use Schema;
use Illuminate\Notifications\Notifiable;
use Pterodactyl\Models\Traits\Searchable;
use Znck\Eloquent\Traits\BelongsToThrough;
@ -34,6 +33,7 @@ use Znck\Eloquent\Traits\BelongsToThrough;
* @property int $installed
* @property int $allocation_limit
* @property int $database_limit
* @property int $backup_limit
* @property \Carbon\Carbon $created_at
* @property \Carbon\Carbon $updated_at
*
@ -127,6 +127,7 @@ class Server extends Model
'installed' => 'in:0,1,2',
'database_limit' => 'present|nullable|integer|min:0',
'allocation_limit' => 'sometimes|nullable|integer|min:0',
'backup_limit' => 'present|nullable|integer|min:0',
];
/**
@ -152,6 +153,7 @@ class Server extends Model
'installed' => 'integer',
'database_limit' => 'integer',
'allocation_limit' => 'integer',
'backup_limit' => 'integer',
];
/**
@ -170,16 +172,6 @@ class Server extends Model
'pack.name' => 10,
];
/**
* Return the columns available for this table.
*
* @return array
*/
public function getTableColumns()
{
return Schema::getColumnListing($this->getTable());
}
/**
* Returns the format for server allocations when communicating with the Daemon.
*

View file

@ -101,8 +101,9 @@ class BuildModificationService
'threads' => array_get($data, 'threads'),
'disk' => array_get($data, 'disk'),
'allocation_id' => array_get($data, 'allocation_id'),
'database_limit' => array_get($data, 'database_limit'),
'allocation_limit' => array_get($data, 'allocation_limit'),
'database_limit' => array_get($data, 'database_limit', 0),
'allocation_limit' => array_get($data, 'allocation_limit', 0),
'backup_limit' => array_get($data, 'backup_limit', 0),
]);
$updateData = $this->structureService->handle($server);

View file

@ -249,8 +249,9 @@ class ServerCreationService
'pack_id' => empty($data['pack_id']) ? null : $data['pack_id'],
'startup' => Arr::get($data, 'startup'),
'image' => Arr::get($data, 'image'),
'database_limit' => Arr::get($data, 'database_limit'),
'allocation_limit' => Arr::get($data, 'allocation_limit'),
'database_limit' => Arr::get($data, 'database_limit', 0),
'allocation_limit' => Arr::get($data, 'allocation_limit', 0),
'backup_limit' => Arr::get($data, 'backup_limit', 0),
]);
return $model;

View file

@ -80,6 +80,7 @@ class ServerTransformer extends BaseTransformer
'feature_limits' => [
'databases' => $server->database_limit,
'allocations' => $server->allocation_limit,
'backups' => $server->backup_limit,
],
'user' => $server->owner_id,
'node' => $server->node_id,

View file

@ -55,6 +55,7 @@ class ServerTransformer extends BaseClientTransformer
'feature_limits' => [
'databases' => $server->database_limit,
'allocations' => $server->allocation_limit,
'backups' => $server->backup_limit,
],
'is_suspended' => $server->suspended !== 0,
'is_installing' => $server->installed !== 1,

View file

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddBackupLimitToServers extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('servers', function (Blueprint $table) {
$table->unsignedInteger('backup_limit')->default(0)->after('database_limit');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('servers', function (Blueprint $table) {
$table->dropColumn('backup_limit');
});
}
}

View file

@ -29,6 +29,7 @@ export interface Server {
featureLimits: {
databases: number;
allocations: number;
backups: number;
};
isSuspended: boolean;
isInstalling: boolean;

View file

@ -118,15 +118,21 @@
<div>
<input type="text" id="pDatabaseLimit" name="database_limit" class="form-control" value="{{ old('database_limit', 0) }}"/>
</div>
<p class="text-muted small">The total number of databases a user is allowed to create for this server. Leave blank to allow unlimited.</p>
<p class="text-muted small">The total number of databases a user is allowed to create for this server.</p>
</div>
<div class="form-group col-xs-6">
<label for="pAllocationLimit" class="control-label">Allocation Limit</label>
<div>
<input type="text" id="pAllocationLimit" name="allocation_limit" class="form-control" value="{{ old('allocation_limit', 0) }}"/>
</div>
<p class="text-muted small">The total number of allocations a user is allowed to create for this server. Leave blank to allow unlimited.</p>
<p class="text-muted small">The total number of allocations a user is allowed to create for this server.</p>
</div>
<div class="form-group col-xs-6">
<label for="pBackupLimit" class="control-label">Backup Limit</label>
<div>
<input type="text" id="pBackupLimit" name="backup_limit" class="form-control" value="{{ old('backup_limit', 0) }}"/>
</div>
<p class="text-muted small">The total number of backups that can be created for this server.</p>
</div>
</div>
</div>

View file

@ -104,18 +104,25 @@
<div class="box-body">
<div class="row">
<div class="form-group col-xs-6">
<label for="cpu" class="control-label">Database Limit</label>
<label for="database_limit" class="control-label">Database Limit</label>
<div>
<input type="text" name="database_limit" class="form-control" value="{{ old('database_limit', $server->database_limit) }}"/>
</div>
<p class="text-muted small">The total number of databases a user is allowed to create for this server. Leave blank to allow unlimited.</p>
<p class="text-muted small">The total number of databases a user is allowed to create for this server.</p>
</div>
<div class="form-group col-xs-6">
<label for="cpu" class="control-label">Allocation Limit</label>
<label for="allocation_limit" class="control-label">Allocation Limit</label>
<div>
<input type="text" name="allocation_limit" class="form-control" value="{{ old('allocation_limit', $server->allocation_limit) }}"/>
</div>
<p class="text-muted small"><strong>This feature is not currently implemented.</strong> The total number of allocations a user is allowed to create for this server. Leave blank to allow unlimited.</p>
<p class="text-muted small"><strong>This feature is not currently implemented.</strong> The total number of allocations a user is allowed to create for this server.</p>
</div>
<div class="form-group col-xs-6">
<label for="backup_limit" class="control-label">Backup Limit</label>
<div>
<input type="text" name="backup_limit" class="form-control" value="{{ old('backup_limit', $server->backup_limit) }}"/>
</div>
<p class="text-muted small">The total number of backups that can be created for this server.</p>
</div>
</div>
</div>