Default to OOM killer being disabled, add back configuration option per-server
This commit is contained in:
parent
2198269a65
commit
81409947cf
9 changed files with 38 additions and 3 deletions
|
@ -21,11 +21,13 @@ error encountered during creation or update.
|
||||||
* Client API endpoint to list all servers now supports an additional `?filter=subuser-of|all|admin|owner` parameter to
|
* Client API endpoint to list all servers now supports an additional `?filter=subuser-of|all|admin|owner` parameter to
|
||||||
return different groupings of servers. The default value is `subuser-of` which will include all of the user's servers
|
return different groupings of servers. The default value is `subuser-of` which will include all of the user's servers
|
||||||
that they are the owner of, as well as all servers they're a subuser of.
|
that they are the owner of, as well as all servers they're a subuser of.
|
||||||
|
* Added back ability to toggle OOM killer status on a per-server basis.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
* Updated Paper egg to not download `server.properties` each time. [parkervcp/eggs#260](https://github.com/parkervcp/eggs/issues/260)
|
* Updated Paper egg to not download `server.properties` each time. [parkervcp/eggs#260](https://github.com/parkervcp/eggs/issues/260)
|
||||||
* Insurgency egg now uses the proper dedicated server ID.
|
* Insurgency egg now uses the proper dedicated server ID.
|
||||||
* Teamspeak egg updated with improved installation process and grabbing latest versions.
|
* Teamspeak egg updated with improved installation process and grabbing latest versions.
|
||||||
|
* OOM killer disabled by default on all new servers.
|
||||||
|
|
||||||
## v0.7.14 (Derelict Dermodactylus)
|
## v0.7.14 (Derelict Dermodactylus)
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
|
@ -516,7 +516,7 @@ class ServersController extends Controller
|
||||||
$this->buildModificationService->handle($server, $request->only([
|
$this->buildModificationService->handle($server, $request->only([
|
||||||
'allocation_id', 'add_allocations', 'remove_allocations',
|
'allocation_id', 'add_allocations', 'remove_allocations',
|
||||||
'memory', 'swap', 'io', 'cpu', 'disk',
|
'memory', 'swap', 'io', 'cpu', 'disk',
|
||||||
'database_limit', 'allocation_limit',
|
'database_limit', 'allocation_limit', 'oom_disabled',
|
||||||
]));
|
]));
|
||||||
$this->alert->success(trans('admin/server.alerts.build_updated'))->flash();
|
$this->alert->success(trans('admin/server.alerts.build_updated'))->flash();
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@ class StoreServerRequest extends ApplicationApiRequest
|
||||||
'startup' => $rules['startup'],
|
'startup' => $rules['startup'],
|
||||||
'environment' => 'present|array',
|
'environment' => 'present|array',
|
||||||
'skip_scripts' => 'sometimes|boolean',
|
'skip_scripts' => 'sometimes|boolean',
|
||||||
|
'oom_disabled' => 'sometimes|boolean',
|
||||||
|
|
||||||
// Resource limitations
|
// Resource limitations
|
||||||
'limits' => 'required|array',
|
'limits' => 'required|array',
|
||||||
|
|
|
@ -18,6 +18,7 @@ class UpdateServerBuildConfigurationRequest extends ServerWriteRequest
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'allocation' => $rules['allocation_id'],
|
'allocation' => $rules['allocation_id'],
|
||||||
|
'oom_disabled' => $rules['oom_disabled'],
|
||||||
|
|
||||||
'limits' => 'sometimes|array',
|
'limits' => 'sometimes|array',
|
||||||
'limits.memory' => $this->requiredToOptional('memory', $rules['memory'], true),
|
'limits.memory' => $this->requiredToOptional('memory', $rules['memory'], true),
|
||||||
|
|
|
@ -28,6 +28,16 @@ class Server extends Model implements CleansAttributes, ValidableContract
|
||||||
*/
|
*/
|
||||||
protected $table = 'servers';
|
protected $table = 'servers';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default values when creating the model. We want to switch to disabling OOM killer
|
||||||
|
* on server instances unless the user specifies otherwise in the request.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $attributes = [
|
||||||
|
'oom_disabled' => true,
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The attributes that should be mutated to dates.
|
* The attributes that should be mutated to dates.
|
||||||
*
|
*
|
||||||
|
@ -53,6 +63,7 @@ class Server extends Model implements CleansAttributes, ValidableContract
|
||||||
'swap' => 'required',
|
'swap' => 'required',
|
||||||
'io' => 'required',
|
'io' => 'required',
|
||||||
'cpu' => 'required',
|
'cpu' => 'required',
|
||||||
|
'oom_disabled' => 'sometimes',
|
||||||
'disk' => 'required',
|
'disk' => 'required',
|
||||||
'nest_id' => 'required',
|
'nest_id' => 'required',
|
||||||
'egg_id' => 'required',
|
'egg_id' => 'required',
|
||||||
|
@ -79,6 +90,7 @@ class Server extends Model implements CleansAttributes, ValidableContract
|
||||||
'swap' => 'numeric|min:-1',
|
'swap' => 'numeric|min:-1',
|
||||||
'io' => 'numeric|between:10,1000',
|
'io' => 'numeric|between:10,1000',
|
||||||
'cpu' => 'numeric|min:0',
|
'cpu' => 'numeric|min:0',
|
||||||
|
'oom_disabled' => 'boolean',
|
||||||
'disk' => 'numeric|min:0',
|
'disk' => 'numeric|min:0',
|
||||||
'allocation_id' => 'bail|unique:servers|exists:allocations,id',
|
'allocation_id' => 'bail|unique:servers|exists:allocations,id',
|
||||||
'nest_id' => 'exists:nests,id',
|
'nest_id' => 'exists:nests,id',
|
||||||
|
@ -107,7 +119,7 @@ class Server extends Model implements CleansAttributes, ValidableContract
|
||||||
'disk' => 'integer',
|
'disk' => 'integer',
|
||||||
'io' => 'integer',
|
'io' => 'integer',
|
||||||
'cpu' => 'integer',
|
'cpu' => 'integer',
|
||||||
'oom_disabled' => 'integer',
|
'oom_disabled' => 'boolean',
|
||||||
'allocation_id' => 'integer',
|
'allocation_id' => 'integer',
|
||||||
'nest_id' => 'integer',
|
'nest_id' => 'integer',
|
||||||
'egg_id' => 'integer',
|
'egg_id' => 'integer',
|
||||||
|
|
|
@ -85,6 +85,7 @@ class BuildModificationService
|
||||||
}
|
}
|
||||||
|
|
||||||
$server = $this->repository->withFreshModel()->update($server->id, [
|
$server = $this->repository->withFreshModel()->update($server->id, [
|
||||||
|
'oom_disabled' => array_get($data, 'oom_disabled'),
|
||||||
'memory' => array_get($data, 'memory'),
|
'memory' => array_get($data, 'memory'),
|
||||||
'swap' => array_get($data, 'swap'),
|
'swap' => array_get($data, 'swap'),
|
||||||
'io' => array_get($data, 'io'),
|
'io' => array_get($data, 'io'),
|
||||||
|
@ -97,6 +98,7 @@ class BuildModificationService
|
||||||
|
|
||||||
$allocations = $this->allocationRepository->findWhere([['server_id', '=', $server->id]]);
|
$allocations = $this->allocationRepository->findWhere([['server_id', '=', $server->id]]);
|
||||||
|
|
||||||
|
$build['oom_disabled'] = $server->oom_disabled;
|
||||||
$build['memory'] = (int) $server->memory;
|
$build['memory'] = (int) $server->memory;
|
||||||
$build['swap'] = (int) $server->swap;
|
$build['swap'] = (int) $server->swap;
|
||||||
$build['io'] = (int) $server->io;
|
$build['io'] = (int) $server->io;
|
||||||
|
|
|
@ -70,6 +70,7 @@ class ServerConfigurationStructureService
|
||||||
return $item->pluck('port');
|
return $item->pluck('port');
|
||||||
})->toArray(),
|
})->toArray(),
|
||||||
'env' => $this->environment->handle($server),
|
'env' => $this->environment->handle($server),
|
||||||
|
'oom_disabled' => $server->oom_disabled,
|
||||||
'memory' => (int) $server->memory,
|
'memory' => (int) $server->memory,
|
||||||
'swap' => (int) $server->swap,
|
'swap' => (int) $server->swap,
|
||||||
'io' => (int) $server->io,
|
'io' => (int) $server->io,
|
||||||
|
|
|
@ -227,7 +227,7 @@ class ServerCreationService
|
||||||
'disk' => array_get($data, 'disk'),
|
'disk' => array_get($data, 'disk'),
|
||||||
'io' => array_get($data, 'io'),
|
'io' => array_get($data, 'io'),
|
||||||
'cpu' => array_get($data, 'cpu'),
|
'cpu' => array_get($data, 'cpu'),
|
||||||
'oom_disabled' => false,
|
'oom_disabled' => array_get($data, 'oom_disabled', true),
|
||||||
'allocation_id' => array_get($data, 'allocation_id'),
|
'allocation_id' => array_get($data, 'allocation_id'),
|
||||||
'nest_id' => array_get($data, 'nest_id'),
|
'nest_id' => array_get($data, 'nest_id'),
|
||||||
'egg_id' => array_get($data, 'egg_id'),
|
'egg_id' => array_get($data, 'egg_id'),
|
||||||
|
|
|
@ -85,6 +85,22 @@
|
||||||
</div>
|
</div>
|
||||||
<p class="text-muted small">This server will not be allowed to boot if it is using more than this amount of space. If a server goes over this limit while running it will be safely stopped and locked until enough space is available.</p>
|
<p class="text-muted small">This server will not be allowed to boot if it is using more than this amount of space. If a server goes over this limit while running it will be safely stopped and locked until enough space is available.</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="cpu" class="control-label">OOM Killer</label>
|
||||||
|
<div>
|
||||||
|
<div class="radio radio-danger radio-inline">
|
||||||
|
<input type="radio" id="pOomKillerEnabled" value="0" name="oom_disabled" @if(!$server->oom_disabled)checked @endif>
|
||||||
|
<label for="pOomKillerEnabled">Enabled</label>
|
||||||
|
</div>
|
||||||
|
<div class="radio radio-success radio-inline">
|
||||||
|
<input type="radio" id="pOomKillerDisabled" value="1" name="oom_disabled" @if($server->oom_disabled)checked @endif>
|
||||||
|
<label for="pOomKillerDisabled">Disabled</label>
|
||||||
|
</div>
|
||||||
|
<p class="text-muted small">
|
||||||
|
Enabling OOM killer may cause server processes to exit unexpectedly.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue