controller(OsGroupController::class) ->as('os-groups.') ->group(function () { Route::get('/', 'index')->middleware('perm:module-vcenter.manager')->name('index'); Route::post('/', 'store')->middleware('perm:module-vcenter.manager')->name('store'); Route::get('{id}', 'show')->middleware('perm:module-vcenter.manager')->name('show'); Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager')->name('update'); Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager')->name('destroy'); }); Route::prefix('os') ->controller(OsController::class) ->as('os.') ->group(function () { Route::post('/', 'store')->middleware('perm:module-vcenter.manager')->name('store'); Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager')->name('update'); Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager')->name('destroy'); }); // VPS (module: module-vcenter) Route::prefix('vps') ->controller(VPSController::class) ->group(function () { Route::get('/', 'index')->middleware('perm:module-vcenter.view'); Route::get('{id}', 'show')->middleware('perm:module-vcenter.view'); Route::put('{id}', 'update')->middleware('perm:module-vcenter.edit'); Route::post('{id}/power-on', 'powerOn')->middleware('perm:module-vcenter.edit'); Route::post('{id}/power-off', 'powerOff')->middleware('perm:module-vcenter.edit'); Route::post('{id}/restart', 'restart')->middleware('perm:module-vcenter.edit'); Route::get('{id}/console-ticket', 'getConsoleTicket')->middleware('perm:module-vcenter.view'); }); // vCenter (module: module-vcenter) Route::prefix('vcenter') ->controller(VCenterController::class) ->group(function () { Route::get('tree', 'tree')->middleware('perm:module-vcenter.view'); Route::get('console-ticket', 'consoleTicket')->middleware('perm:module-vcenter.view'); Route::post('/', 'store')->middleware('perm:module-vcenter.create'); Route::post('sync', 'sync')->middleware('perm:module-vcenter.edit'); Route::post('node/{type}', 'storeNode')->middleware('perm:module-vcenter.create'); Route::put('node/{type}/{id}', 'updateNode')->middleware('perm:module-vcenter.edit'); Route::delete('node/{type}/{id}', 'destroyNode')->middleware('perm:module-vcenter.destroy'); }); // InfraManagement (jumphost, vcenter config) Route::prefix('infra-management') ->controller(InfraManagementController::class) ->group(function () { Route::get('/', 'index')->middleware('perm:module-vcenter.manager'); Route::post('/', 'store')->middleware('perm:module-vcenter.manager'); Route::get('{id}', 'show')->middleware('perm:module-vcenter.manager'); Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager'); Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager'); }); // Provider (active vCenter chain + provider settings — module: module-vcenter) Route::prefix('provider')->group(function () { Route::get('active-chain', [ \App\Http\Controllers\Api\Admin\Provider\ActiveInfraController::class, 'chain', ])->middleware('perm:module-vcenter.view'); Route::post('{type}/{id}/activate', [ \App\Http\Controllers\Api\Admin\Provider\ActiveInfraController::class, 'activate', ]) ->whereIn('type', ['vcenter', 'datacenter', 'host', 'datastore', 'network']) ->middleware('perm:module-vcenter.edit'); Route::post('{type}/{id}/deactivate', [ \App\Http\Controllers\Api\Admin\Provider\ActiveInfraController::class, 'deactivate', ]) ->whereIn('type', ['vcenter', 'datacenter', 'host', 'datastore', 'network']) ->middleware('perm:module-vcenter.edit'); Route::get('settings', [ \App\Http\Controllers\Api\Admin\Provider\ProviderSettingController::class, 'index', ])->middleware('perm:module-vcenter.view'); Route::put('settings', [ \App\Http\Controllers\Api\Admin\Provider\ProviderSettingController::class, 'update', ])->middleware('perm:module-vcenter.edit'); }); // IP Pool (module: module-vcenter) Route::prefix('ip-pool') ->controller(IpPoolController::class) ->group(function () { Route::get('networks', 'networks')->middleware('perm:module-vcenter.view'); Route::get('used-services', 'usedServices')->middleware('perm:module-vcenter.view'); Route::get('/', 'index')->middleware('perm:module-vcenter.view'); Route::post('/', 'store')->middleware('perm:module-vcenter.manager'); Route::post('sync', 'sync')->middleware('perm:module-vcenter.manager'); Route::post('import/preview', 'importPreview')->middleware('perm:module-vcenter.manager'); Route::post('import', 'import')->middleware('perm:module-vcenter.manager'); Route::delete('bulk', 'bulkDelete')->middleware('perm:module-vcenter.manager'); Route::post('bulk-update-gateway', 'bulkUpdateGateway')->middleware('perm:module-vcenter.manager'); Route::post('allocation/preview', 'allocationPreview')->middleware('perm:module-vcenter.manager'); Route::post('allocate', 'allocate')->middleware('perm:module-vcenter.manager'); Route::post('revocation/preview', 'revocationPreview')->middleware('perm:module-vcenter.manager'); Route::post('revoke', 'revoke')->middleware('perm:module-vcenter.manager'); Route::get('{id}/logs', 'logs')->middleware('perm:module-vcenter.view'); Route::get('{id}', 'show')->middleware('perm:module-vcenter.view'); Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager'); Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager'); }); // vCenter Manager Power Operations (module: module-vcenter) Route::prefix('vcenter-manager') ->controller(VCenterManagerController::class) ->group(function () { Route::post('vm/power-on', 'powerOn')->middleware('perm:module-vcenter.edit'); Route::post('vm/power-off', 'powerOff')->middleware('perm:module-vcenter.edit'); Route::post('vm/restart', 'restart')->middleware('perm:module-vcenter.edit'); Route::post('vm/snapshot', 'snapshot')->middleware('perm:module-vcenter.edit'); Route::post('vm/suspend', 'suspend')->middleware('perm:module-vcenter.edit'); Route::post('vm/update-config', 'updateConfig')->middleware('perm:module-vcenter.edit'); Route::post('vm/delete', 'deleteVM')->middleware('perm:module-vcenter.edit'); Route::get('vm/stats', 'stats')->middleware('perm:module-vcenter.view'); Route::get('vm/power-state', 'powerState')->middleware('perm:module-vcenter.view'); Route::get('vms/powered-off', 'getPoweredOffVms')->middleware('perm:module-vcenter.view'); }); // VM Rebuild Logs — who rebuilt, which OS, post-rebuild password Route::prefix('rebuild-logs') ->controller(AdminReinstallLogController::class) ->group(function () { Route::get('/', 'index')->middleware('perm:vps.view'); Route::get('stats', 'stats')->middleware('perm:vps.view'); Route::get('{id}', 'show')->middleware('perm:vps.view')->whereNumber('id'); });