diff --git a/Speed/SyncBuildService.php b/Speed/SyncBuildService.php new file mode 100644 index 0000000..4503fc3 --- /dev/null +++ b/Speed/SyncBuildService.php @@ -0,0 +1,63 @@ +allocationRepository->setServer($server); + + $eloquentDetails = $this->detailService->getByEloquent($server); + $disks = $this->allocationService->getDisks($server); + $bootOrder = $this->allocationService->getBootOrder($server); + + $this->allocationService->syncSettings($server); + + /* Sync metadata */ + $this->cloudinitService->updateHostname($server, $eloquentDetails->hostname); + + /* Sync network configuration */ + $this->networkService->syncSettings($server); + + // find a disk that has a corresponding disk in the deployment + $disksArray = collect($disks->toArray())->pluck('interface')->all(); + $bootOrder = array_filter( + collect($bootOrder->filter(fn (DiskData $disk) => !$disk->is_media)->toArray())->pluck( + 'interface', + )->toArray(), fn ($disk) => in_array($disk, $disksArray), + ); + + if (count($bootOrder) > 0) { + /** @var DiskData $disk */ + $disk = $disks->where('interface', '=', DiskInterface::from(Arr::first($bootOrder))) + ->first(); + + $diff = $server->disk - $disk->size; + + if ($diff > 0) { + $this->diskRepository->setServer($server)->resizeDisk( + $disk->interface, $server->disk, + ); + } + } + } +}