Implement VM provision locking mechanism and enhance VM job handling
This commit is contained in:
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user