refactor: Remove extensive unused administrative UI, styling, and JavaScript assets, and introduce a new payment API controller.
This commit is contained in:
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\admin;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\ModuleIpAddress;
|
||||
use App\Models\ModuleVmware;
|
||||
use App\Models\VirtualMachines;
|
||||
use App\Repositories\Module\Datacenter\DatacenterRepositoryInterface;
|
||||
use App\Repositories\Module\Datastore\DatastoreRepositoryInterface;
|
||||
use App\Repositories\Module\Folder\FolderRepositoryInterface;
|
||||
@@ -13,6 +14,7 @@ use App\Repositories\Module\IpAddress\IpAddressRepositoryInterface;
|
||||
use App\Repositories\Module\Network\NetworkRepositoryInterface;
|
||||
use App\Repositories\vCenter\vCenterRepositoryInterface;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Yajra\DataTables\Facades\DataTables;
|
||||
|
||||
class VCenterManagerController extends Controller
|
||||
@@ -437,4 +439,144 @@ class VCenterManagerController extends Controller
|
||||
return response()->json(['error' => $e->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
||||
public function powerOn(Request $request)
|
||||
{
|
||||
$vmId = (int) $request->input('vm_id');
|
||||
|
||||
$vm = VirtualMachines::find($vmId);
|
||||
|
||||
if (!$vm) {
|
||||
return response()->json(['error' => true, 'message' => 'VM not found'], 404);
|
||||
}
|
||||
|
||||
$vmwareId = $vm->vm_id;
|
||||
|
||||
if (!$vmwareId) {
|
||||
return response()->json(['error' => true, 'message' => 'VM VMware ID not found'], 400);
|
||||
}
|
||||
|
||||
if ($vm->power_state === 'POWERED_ON') {
|
||||
return response()->json(['error' => true, 'message' => 'VM is already powered on'], 400);
|
||||
}
|
||||
|
||||
$vcenter = null;
|
||||
|
||||
if ($vm->datacenter?->vCenter) {
|
||||
$vcenter = $vm->datacenter->vCenter;
|
||||
}
|
||||
|
||||
if (!$vcenter && $vm->host?->datacenter?->vCenter) {
|
||||
$vcenter = $vm->host->datacenter->vCenter;
|
||||
}
|
||||
|
||||
if (!$vcenter) {
|
||||
return response()->json(['error' => true, 'message' => 'vCenter not found'], 400);
|
||||
}
|
||||
|
||||
$vCenterService = new \App\Http\Services\vCenter();
|
||||
|
||||
if (!$vCenterService->loginServer($vcenter)) {
|
||||
return response()->json(['error' => true, 'message' => 'Cannot login to vCenter'], 400);
|
||||
}
|
||||
|
||||
$response = Http::withoutVerifying()
|
||||
->withHeaders([
|
||||
'vmware-api-session-id' => $vCenterService->token
|
||||
])
|
||||
->post("https://{$vCenterService->apiUri}/rest/vcenter/vm/$vmwareId/power/start");
|
||||
|
||||
if ($response->status() === 200) {
|
||||
$vm->update(['power_state' => 'POWERED_ON']);
|
||||
return response()->json(['error' => false, 'message' => 'Power on command sent successfully']);
|
||||
}
|
||||
|
||||
$errorData = $response->json();
|
||||
if (isset($errorData['error_type']) && $errorData['error_type'] === 'ALREADY_IN_DESIRED_STATE') {
|
||||
$vm->update(['power_state' => 'POWERED_ON']);
|
||||
return response()->json(['error' => false, 'message' => 'VM is already powered on']);
|
||||
}
|
||||
|
||||
return response()->json(['error' => true, 'message' => $errorData['value'] ?? $errorData['error_type'] ?? 'Failed to power on VM'], 400);
|
||||
}
|
||||
|
||||
public function powerOff(Request $request)
|
||||
{
|
||||
$vmId = (int) $request->input('vm_id');
|
||||
|
||||
$vm = VirtualMachines::find($vmId);
|
||||
|
||||
if (!$vm) {
|
||||
return response()->json(['error' => true, 'message' => 'VM not found'], 404);
|
||||
}
|
||||
|
||||
$vmwareId = $vm->vm_id;
|
||||
|
||||
if (!$vmwareId) {
|
||||
return response()->json(['error' => true, 'message' => 'VM VMware ID not found'], 400);
|
||||
}
|
||||
|
||||
if ($vm->power_state === 'POWERED_OFF') {
|
||||
return response()->json(['error' => true, 'message' => 'VM is already powered off'], 400);
|
||||
}
|
||||
|
||||
$vcenter = null;
|
||||
|
||||
if ($vm->datacenter?->vCenter) {
|
||||
$vcenter = $vm->datacenter->vCenter;
|
||||
}
|
||||
|
||||
if (!$vcenter && $vm->host?->datacenter?->vCenter) {
|
||||
$vcenter = $vm->host->datacenter->vCenter;
|
||||
}
|
||||
|
||||
if (!$vcenter) {
|
||||
return response()->json(['error' => true, 'message' => 'vCenter not found'], 400);
|
||||
}
|
||||
|
||||
$vCenterService = new \App\Http\Services\vCenter();
|
||||
|
||||
if (!$vCenterService->loginServer($vcenter)) {
|
||||
return response()->json(['error' => true, 'message' => 'Cannot login to vCenter'], 400);
|
||||
}
|
||||
|
||||
$response = Http::withoutVerifying()
|
||||
->withHeaders([
|
||||
'vmware-api-session-id' => $vCenterService->token
|
||||
])
|
||||
->post("https://{$vCenterService->apiUri}/rest/vcenter/vm/$vmwareId/power/stop");
|
||||
|
||||
if ($response->status() === 200) {
|
||||
$vm->update(['power_state' => 'POWERED_OFF']);
|
||||
return response()->json(['error' => false, 'message' => 'Power off command sent successfully']);
|
||||
}
|
||||
|
||||
$errorData = $response->json();
|
||||
if (isset($errorData['error_type']) && $errorData['error_type'] === 'ALREADY_IN_DESIRED_STATE') {
|
||||
$vm->update(['power_state' => 'POWERED_OFF']);
|
||||
return response()->json(['error' => false, 'message' => 'VM is already powered off']);
|
||||
}
|
||||
|
||||
return response()->json(['error' => true, 'message' => $errorData['value'] ?? $errorData['error_type'] ?? 'Failed to power off VM'], 400);
|
||||
}
|
||||
|
||||
public function getPoweredOffVms()
|
||||
{
|
||||
$vms = VirtualMachines::whereNotNull('vm_id')
|
||||
->where('power_state', 'POWERED_OFF')
|
||||
->get()
|
||||
->map(function ($vm) {
|
||||
return [
|
||||
'id' => $vm->id,
|
||||
'name' => $vm->name,
|
||||
'vm_id' => $vm->vm_id,
|
||||
'power_state' => $vm->power_state,
|
||||
];
|
||||
});
|
||||
|
||||
return response()->json([
|
||||
'error' => false,
|
||||
'data' => $vms
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user