%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps/app_api/lib/Migration/ |
Current File : //www/varak.net/nextcloud.varak.net/apps/app_api/lib/Migration/DaemonUpdateGPUSRepairStep.php |
<?php declare(strict_types=1); namespace OCA\AppAPI\Migration; use OCA\AppAPI\Db\DaemonConfig; use OCA\AppAPI\Db\DaemonConfigMapper; use OCP\DB\Exception; use OCP\Migration\IOutput; use OCP\Migration\IRepairStep; use Psr\Log\LoggerInterface; class DaemonUpdateGPUSRepairStep implements IRepairStep { public function __construct( private readonly DaemonConfigMapper $daemonConfigMapper, private readonly LoggerInterface $logger, ) { } public function getName(): string { return 'AppAPI Daemons configuration GPU params update'; } public function run(IOutput $output): void { $daemons = $this->daemonConfigMapper->findAll(); $daemonsUpdated = 0; // Update manual-install daemons /** @var DaemonConfig $daemon */ foreach ($daemons as $daemon) { $daemonsUpdated += $this->updateDaemonConfiguration($daemon); } $output->info(sprintf('Daemons configuration GPU params updated: %s', $daemonsUpdated)); } private function updateDaemonConfiguration(DaemonConfig $daemonConfig): int { $updated = false; $deployConfig = $daemonConfig->getDeployConfig(); if (isset($deployConfig['gpu'])) { if (filter_var($deployConfig['gpu'], FILTER_VALIDATE_BOOLEAN)) { $deployConfig['computeDevice'] = [ 'id' => 'cuda', 'label' => 'CUDA (NVIDIA)', ]; } else { $deployConfig['computeDevice'] = [ 'id' => 'cpu', 'label' => 'CPU', ]; } unset($deployConfig['gpu']); $daemonConfig->setDeployConfig($deployConfig); $updated = true; } if ($updated) { try { $this->daemonConfigMapper->update($daemonConfig); return 1; } catch (Exception $e) { $this->logger->error( sprintf('Failed to update Daemon config (%s: %s)', $daemonConfig->getAcceptsDeployId(), $daemonConfig->getName()), ['exception' => $e] ); return 0; } } return 0; } }