Changeset View
Changeset View
Standalone View
Standalone View
src/applications/drydock/worker/DrydockWorker.php
Show First 20 Lines • Show All 235 Lines • ▼ Show 20 Lines | protected function canReclaimResource(DrydockResource $resource) { | ||||
return true; | return true; | ||||
} | } | ||||
protected function reclaimResource( | protected function reclaimResource( | ||||
DrydockResource $resource, | DrydockResource $resource, | ||||
DrydockLease $lease) { | DrydockLease $lease) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
// Mark the lease as reclaiming this resource. It won't be allowed to start | |||||
// another reclaim as long as this resource is still in the process of | |||||
// being reclaimed. | |||||
$lease->setAttribute('drydock.reclaimingPHID', $resource->getPHID()); | |||||
// When the resource releases, we we want to reawaken this task since it | // When the resource releases, we we want to reawaken this task since it | ||||
// should be able to start building a new resource right away. | // should (usually) be able to start building a new resource right away. | ||||
$worker_task_id = $this->getCurrentWorkerTaskID(); | $worker_task_id = $this->getCurrentWorkerTaskID(); | ||||
$command = DrydockCommand::initializeNewCommand($viewer) | $command = DrydockCommand::initializeNewCommand($viewer) | ||||
->setTargetPHID($resource->getPHID()) | ->setTargetPHID($resource->getPHID()) | ||||
->setAuthorPHID($lease->getPHID()) | ->setAuthorPHID($lease->getPHID()) | ||||
->setCommand(DrydockCommand::COMMAND_RECLAIM) | ->setCommand(DrydockCommand::COMMAND_RECLAIM) | ||||
->setProperty('awakenTaskIDs', array($worker_task_id)) | ->setProperty('awakenTaskIDs', array($worker_task_id)); | ||||
->save(); | |||||
$lease->openTransaction(); | |||||
$lease->save(); | |||||
$command->save(); | |||||
$lease->saveTransaction(); | |||||
$resource->scheduleUpdate(); | $resource->scheduleUpdate(); | ||||
return $this; | return $this; | ||||
} | } | ||||
} | } |