update change port
This commit is contained in:
@@ -73,31 +73,21 @@ class ChangeRemotePortJob implements ShouldQueue
|
||||
throw new \RuntimeException('SSH runner login failed.');
|
||||
}
|
||||
if (is_string($result)) {
|
||||
// Script trả non-JSON → bắn lỗi kèm raw để debug
|
||||
throw new \RuntimeException('Script returned non-JSON output: ' . $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Chuẩn hoá $row:
|
||||
* - Script 1-VM: trả 1 object: ['vm'=>.., 'status'=>.., 'message'=>.., 'newPort'=>..]
|
||||
* - (Phòng hờ) Nếu lỡ trả array nhiều item, chọn item có 'vm' trùng $vmName, không thì lấy phần tử đầu.
|
||||
*/
|
||||
$row = null;
|
||||
|
||||
if (is_array($result)) {
|
||||
// case: object đơn
|
||||
if (isset($result['vm']) && isset($result['status'])) {
|
||||
$row = $result;
|
||||
} else {
|
||||
// case: mảng các object
|
||||
// Tìm theo vmName
|
||||
foreach ($result as $it) {
|
||||
if (is_array($it) && (($it['vm'] ?? null) === $vmName)) {
|
||||
$row = $it;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// fallback: phần tử đầu tiên nếu chưa có
|
||||
if ($row === null && isset($result[0]) && is_array($result[0])) {
|
||||
$row = $result[0];
|
||||
}
|
||||
@@ -109,33 +99,23 @@ class ChangeRemotePortJob implements ShouldQueue
|
||||
throw new \RuntimeException('Invalid script response.');
|
||||
}
|
||||
|
||||
// Đọc trường returned
|
||||
$status = strtolower((string) ($row['status'] ?? ''));
|
||||
$message = (string) ($row['message'] ?? '');
|
||||
$newPort = (string) ($row['newPort'] ?? $this->newPort);
|
||||
|
||||
// Xét thành công: status === 'ok'
|
||||
$ok = ($status === 'ok');
|
||||
|
||||
Log::info('ChangeRemotePortJob: script result', [
|
||||
'vm' => $vmName,
|
||||
'status' => $status,
|
||||
'message' => $message,
|
||||
'newPort' => $newPort,
|
||||
'raw' => $row,
|
||||
ModuleVmware::where('id', $product->id)->update([
|
||||
'port' => (int) $newPort,
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
|
||||
if (!$ok) {
|
||||
// Nếu muốn cho phép 'warning' pass, có thể đổi điều kiện ở trên hoặc thêm nhánh dưới:
|
||||
// if ($status === 'warning' && str_contains(strtolower($message), 'rdp port is now')) { $ok = true; }
|
||||
throw new \RuntimeException($message !== '' ? $message : ('Change RDP port failed with status: ' . $status));
|
||||
}
|
||||
|
||||
// Gửi mail thông báo
|
||||
Mail::to($this->email)->send(
|
||||
new ChangePortRemote(vmName: $vmName, newPort: (string) $newPort)
|
||||
);
|
||||
|
||||
Log::info('ChangeRemotePortJob: success', ['vm' => $vmName, 'newPort' => $newPort]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user