Enhance VM service management: add service_id and plain_password fields, sync service records, and update related migrations
This commit is contained in:
@@ -4,14 +4,11 @@ namespace App\Services\Api\Order;
|
||||
|
||||
use App\Enums\Order\OrderStatus;
|
||||
use App\Helpers\OrderHelper;
|
||||
use App\Jobs\VirtualMachine\Create\CreateVMJobs;
|
||||
use App\Jobs\VirtualMachine\Create\CreateVirtualMachineJob;
|
||||
use App\Models\Addon;
|
||||
use App\Models\Log as CustomerActivityLog;
|
||||
use App\Models\ModuleIpAddress;
|
||||
use App\Models\ModuleVmware;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderItem;
|
||||
use App\Models\Os;
|
||||
use App\Models\Service;
|
||||
use App\Models\ServiceAddon;
|
||||
use App\Repositories\Api\Invoice\InvoiceRepository;
|
||||
@@ -239,59 +236,12 @@ class OrderService
|
||||
private function dispatchVmJob(Order $order, OrderItem $item, Service $service, $customer): void
|
||||
{
|
||||
try {
|
||||
$os = Os::with('osGroup.host')->find($item->os_id);
|
||||
dispatch(new CreateVirtualMachineJob($item));
|
||||
|
||||
if (!$os?->osGroup?->module_host_id) {
|
||||
Log::warning('dispatchVmJob: OS/OsGroup/Host not found', [
|
||||
'order_id' => $order->id,
|
||||
'os_id' => $item->os_id,
|
||||
]);
|
||||
return;
|
||||
}
|
||||
|
||||
$ip = ModuleIpAddress::where('module_host_id', $os->osGroup->module_host_id)
|
||||
->where('status', 0)
|
||||
->lockForUpdate()
|
||||
->first();
|
||||
|
||||
if (!$ip) {
|
||||
Log::warning('dispatchVmJob: no available IP', [
|
||||
'order_id' => $order->id,
|
||||
'module_host_id' => $os->osGroup->module_host_id,
|
||||
]);
|
||||
return;
|
||||
}
|
||||
|
||||
$vmName = $item->server_name ?? ('VM-' . $order->id);
|
||||
$ip->update(['status' => 1, 'vm_name' => $vmName]);
|
||||
|
||||
$moduleVmware = ModuleVmware::create([
|
||||
'name' => $vmName,
|
||||
'module_ip_address_id' => $ip->id,
|
||||
'port' => 22,
|
||||
'order_id' => $order->id,
|
||||
'first_payment' => $order->total,
|
||||
'next_payment' => $order->total,
|
||||
'next_due_date' => $service->expires_at,
|
||||
'next_invoice' => 0,
|
||||
'user' => 'Administrator',
|
||||
'password' => '',
|
||||
'hostname' => strtolower($vmName),
|
||||
'vmware_id' => null,
|
||||
'os_id' => $item->os_id,
|
||||
'customer_id' => $customer->id,
|
||||
'status' => 0,
|
||||
]);
|
||||
|
||||
// Store module_vmware.id as vm_id on Service for quick lookup
|
||||
$service->update(['vm_id' => (string) $moduleVmware->id]);
|
||||
|
||||
dispatch(new CreateVMJobs($moduleVmware->id))->delay(now()->addSeconds(10));
|
||||
|
||||
Log::info('dispatchVmJob: CreateVMJobs dispatched', [
|
||||
'order_id' => $order->id,
|
||||
'service_id' => $service->id,
|
||||
'module_vmware_id' => $moduleVmware->id,
|
||||
Log::info('dispatchVmJob: CreateVirtualMachineJob dispatched', [
|
||||
'order_id' => $order->id,
|
||||
'service_id' => $service->id,
|
||||
'order_item_id' => $item->id,
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
Log::error('dispatchVmJob: exception', [
|
||||
|
||||
Reference in New Issue
Block a user