update fix deadcode, security
This commit is contained in:
@@ -0,0 +1,212 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Services\vCenter\Concerns;
|
||||
|
||||
use App\Support\TlsHttpClientFactory;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Exception;
|
||||
|
||||
trait UpgradesVirtualMachine
|
||||
{
|
||||
public function UpgradeMemoryVirtualMachine($vmware_id = '', $ram = 0): array|string
|
||||
{
|
||||
$check = $this->client->checkApiExits();
|
||||
|
||||
if ($check) {
|
||||
$RAMConfig = [
|
||||
"spec" => [
|
||||
"size_MiB" => $ram * 1024,
|
||||
]
|
||||
];
|
||||
$response = TlsHttpClientFactory::vCenter()
|
||||
->withHeaders([
|
||||
'vmware-api-session-id' => $this->client->token
|
||||
])
|
||||
->patch("https://{$this->client->apiUri}/rest/vcenter/vm/$vmware_id/hardware/memory", $RAMConfig);
|
||||
|
||||
if ($response->status() === 200) {
|
||||
return [
|
||||
'error' => false,
|
||||
'data' => 'success'
|
||||
];
|
||||
}
|
||||
return [
|
||||
'error' => true,
|
||||
'data' => $response['value']
|
||||
];
|
||||
}
|
||||
return "Login_Again";
|
||||
}
|
||||
|
||||
public function UpgradeCPUVirtualMachine($vmware_id = '', $cpu = 0): array|string
|
||||
{
|
||||
$check = $this->client->checkApiExits();
|
||||
|
||||
if ($check) {
|
||||
$CPUConfig = [
|
||||
"spec" => [
|
||||
"cores_per_socket" => 1,
|
||||
"count" => $cpu
|
||||
]
|
||||
];
|
||||
$response = TlsHttpClientFactory::vCenter()
|
||||
->withHeaders([
|
||||
'vmware-api-session-id' => $this->client->token
|
||||
])
|
||||
->patch("https://{$this->client->apiUri}/rest/vcenter/vm/$vmware_id/hardware/cpu", $CPUConfig);
|
||||
|
||||
if ($response->status() === 200) {
|
||||
return [
|
||||
'error' => false,
|
||||
'data' => 'success'
|
||||
];
|
||||
}
|
||||
return [
|
||||
'error' => true,
|
||||
'data' => $response['value']
|
||||
];
|
||||
}
|
||||
return "Login_Again";
|
||||
}
|
||||
|
||||
public function UpgradeDiskVirtualMachine($product, $disk = 0): array|string
|
||||
{
|
||||
$vmware_id = $product->vmware_id;
|
||||
$check = $this->client->checkApiExits();
|
||||
if ($check) {
|
||||
try {
|
||||
Log::channel('Custom')->info("===================================================================");
|
||||
Log::channel('Custom')->info("Upgrade Disk with VirtualMachine ID # - $vmware_id");
|
||||
Log::channel('Custom')->info("\r\n");
|
||||
|
||||
$Command = "\$vm = 'VirtualMachine-$vmware_id'; \$disksize = $disk; cd /; C:\CLISave\diskresize.ps1;";
|
||||
|
||||
Log::channel('Custom')->info("$Command");
|
||||
|
||||
$this->powerShellService->executePowerCLI($Command);
|
||||
|
||||
Log::channel('Custom')->info("\r\n");
|
||||
Log::channel('Custom')->info("After run Command |" . now());
|
||||
Log::channel('Custom')->info("===================================================================");
|
||||
|
||||
return [
|
||||
'error' => false
|
||||
];
|
||||
} catch (\Exception $error) {
|
||||
Log::channel('Custom')->info("\r\n");
|
||||
Log::channel('Custom')->info("===================================================================");
|
||||
Log::channel('Custom')->info("Error Log: ");
|
||||
Log::channel('Custom')->info($error->getMessage());
|
||||
Log::channel('Custom')->info("===================================================================");
|
||||
return [
|
||||
'error' => true,
|
||||
'message' => $error->getMessage()
|
||||
];
|
||||
}
|
||||
}
|
||||
return "Login_Again";
|
||||
}
|
||||
|
||||
private function updateVMHardware($vmId, $addon, $base_cpu, $base_ram): void
|
||||
{
|
||||
try {
|
||||
Log::info("=== BẮT ĐẦU CẬP NHẬT ADDON ===");
|
||||
|
||||
$new_cpu = $base_cpu + $addon['cpu'];
|
||||
$new_ram_mib = ($base_ram + $addon['ram']) * 1024;
|
||||
|
||||
if ($addon['cpu'] > 0) {
|
||||
$this->updateVMCPU($vmId, $new_cpu);
|
||||
}
|
||||
|
||||
if ($addon['ram'] > 0) {
|
||||
$this->updateVMMemory($vmId, $new_ram_mib);
|
||||
}
|
||||
|
||||
Log::info("=== HOÀN THÀNH CẬP NHẬT ADDON ===");
|
||||
} catch (Exception $e) {
|
||||
Log::error("❌ Lỗi khi cập nhật cấu hình phần cứng VM {$vmId}: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private function updateVMCPU($vmId, $cpuCount): bool
|
||||
{
|
||||
try {
|
||||
$coresPerSocket = 1;
|
||||
if ($cpuCount > 1) {
|
||||
$maxCoresPerSocket = floor($cpuCount / 2);
|
||||
for ($i = $maxCoresPerSocket; $i >= 1; $i--) {
|
||||
if ($cpuCount % $i === 0) {
|
||||
$coresPerSocket = $i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($coresPerSocket === 1 && $cpuCount > 2) {
|
||||
$coresPerSocket = $cpuCount;
|
||||
}
|
||||
}
|
||||
|
||||
$payload = [
|
||||
'spec' => [
|
||||
'count' => $cpuCount,
|
||||
'cores_per_socket' => $coresPerSocket,
|
||||
'hot_add_enabled' => true
|
||||
]
|
||||
];
|
||||
$response = TlsHttpClientFactory::vCenter()
|
||||
->timeout(30)
|
||||
->withHeaders([
|
||||
'vmware-api-session-id' => $this->client->token,
|
||||
'Content-Type' => 'application/json',
|
||||
])
|
||||
->patch("https://{$this->client->apiUri}/rest/vcenter/vm/{$vmId}/hardware/cpu", $payload);
|
||||
|
||||
if ($response->successful()) {
|
||||
Log::info("✅ API call cập nhật CPU thành công cho VM {$vmId}");
|
||||
return true;
|
||||
} else {
|
||||
Log::error("❌ API call cập nhật CPU thất bại cho VM {$vmId}", [
|
||||
'status' => $response->status(),
|
||||
'response' => $response->body()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
Log::error("❌ Exception khi cập nhật CPU cho VM {$vmId}: " . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private function updateVMMemory($vmId, $ramSizeMB): bool
|
||||
{
|
||||
try {
|
||||
$payload = [
|
||||
'spec' => [
|
||||
'size_MiB' => $ramSizeMB
|
||||
]
|
||||
];
|
||||
|
||||
$response = TlsHttpClientFactory::vCenter()
|
||||
->timeout(30)
|
||||
->withHeaders([
|
||||
'vmware-api-session-id' => $this->client->token,
|
||||
'Content-Type' => 'application/json',
|
||||
])
|
||||
->patch("https://{$this->client->apiUri}/rest/vcenter/vm/{$vmId}/hardware/memory", $payload);
|
||||
|
||||
if ($response->successful()) {
|
||||
Log::info("✅ API call cập nhật RAM thành công cho VM {$vmId}");
|
||||
return true;
|
||||
} else {
|
||||
Log::error("❌ API call cập nhật RAM thất bại cho VM {$vmId}", [
|
||||
'status' => $response->status(),
|
||||
'response' => $response->body()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
Log::error("❌ Exception khi cập nhật RAM cho VM {$vmId}: " . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user