Implement Keystone environment deployments
This commit is contained in:
@@ -5,13 +5,16 @@ namespace App\Http\Controllers;
|
||||
use App\Actions\Services\CreateService;
|
||||
use App\Enums\ServiceCategory;
|
||||
use App\Enums\ServiceType;
|
||||
use App\Http\Requests\StoreServiceRequest;
|
||||
use App\Http\Requests\UpdateServiceRequest;
|
||||
use App\Models\Server;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Inertia\Response;
|
||||
|
||||
class ServiceController extends Controller
|
||||
{
|
||||
public function create(Request $request)
|
||||
public function create(Request $request): Response
|
||||
{
|
||||
$server = Server::findOrFail($request->route('server'));
|
||||
|
||||
@@ -21,19 +24,8 @@ class ServiceController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
public function store(StoreServiceRequest $request): RedirectResponse
|
||||
{
|
||||
$request->validate([
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'category' => ['required', Rule::enum(ServiceCategory::class)],
|
||||
'type' => ['required', Rule::enum(ServiceType::class)],
|
||||
'version' => ['required', 'string', function ($key, $value, $fail) use ($request) {
|
||||
if (!isset(config('keystone.services')[$request->category][$request->type]['versions'][$value])) {
|
||||
$fail('The selected version is invalid.');
|
||||
}
|
||||
}],
|
||||
]);
|
||||
|
||||
$server = Server::findOrFail($request->route('server'));
|
||||
|
||||
$service = app(CreateService::class)->execute(
|
||||
@@ -52,4 +44,44 @@ class ServiceController extends Controller
|
||||
'service' => $service,
|
||||
]);
|
||||
}
|
||||
|
||||
public function show(Request $request): Response
|
||||
{
|
||||
$server = Server::findOrFail($request->route('server'));
|
||||
$service = $server->services()
|
||||
->with(['replicas', 'slices', 'operations.steps', 'environment.application'])
|
||||
->findOrFail($request->route('service'));
|
||||
|
||||
return inertia('services/Show', [
|
||||
'server' => $server,
|
||||
'service' => $service,
|
||||
]);
|
||||
}
|
||||
|
||||
public function edit(Request $request): Response
|
||||
{
|
||||
$server = Server::findOrFail($request->route('server'));
|
||||
$service = $server->services()->findOrFail($request->route('service'));
|
||||
|
||||
return inertia('services/Edit', [
|
||||
'server' => $server,
|
||||
'service' => $service,
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(UpdateServiceRequest $request): RedirectResponse
|
||||
{
|
||||
$server = Server::findOrFail($request->route('server'));
|
||||
$service = $server->services()->findOrFail($request->route('service'));
|
||||
|
||||
$service->update($request->validated());
|
||||
|
||||
return redirect()
|
||||
->route('services.show', [
|
||||
'organisation' => $server->organisation_id,
|
||||
'server' => $server->id,
|
||||
'service' => $service->id,
|
||||
])
|
||||
->with('success', 'Service updated.');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user