Implement VM provision locking mechanism and enhance VM job handling

This commit is contained in:
baodev0
2026-07-13 11:23:53 +07:00
parent 0976e23d1a
commit 8d3410f8cc
11 changed files with 143 additions and 131 deletions
+14 -2
View File
@@ -7,6 +7,7 @@ use App\Jobs\Hosting\CreateHostingJobs;
use App\Jobs\VirtualMachine\Action\RemoveVirtualMachine;
use App\Jobs\VirtualMachine\Action\VMJobs;
use App\Jobs\VirtualMachine\Create\CreateVMJobs;
use App\Jobs\VirtualMachine\Handle\WaitStatusVirtualMachine;
use App\Models\Log;
use App\Repositories\Module\HostingServer\HostingServerRepositoryInterface;
use App\Repositories\Module\IpAddress\IpAddressRepositoryInterface;
@@ -170,9 +171,20 @@ class TaskController extends Controller
return back()->withErrors($validator);
}
$jobs = new VMJobs($request->product, $request->action);
// ponytail: map action → waitFor (operations_ready value to poll WHILE waiting)
$waitMap = [
'Suspend' => true,
'ShutdownGuest' => true,
'PowerOff' => true,
'Reboot' => false,
'Start' => false,
];
dispatch($jobs)->delay(now()->addSeconds(5));
dispatch(new VMJobs($request->product, $request->action));
if (isset($waitMap[$request->action])) {
dispatch(new WaitStatusVirtualMachine($request->product, $waitMap[$request->action]));
}
Log::create([
'agent' => $request->userAgent(),