public function getPendingLease() { if (!$this->lease) { $lease = new DrydockLease(); $lease->setStatus(DrydockLeaseStatus::STATUS_PENDING); $lease->save(); $this->lease = $lease; } return $lease; }
private function releaseLease(DrydockLease $lease) { $lease->openTransaction(); $lease->setStatus(DrydockLeaseStatus::STATUS_RELEASED)->save(); // TODO: Hold slot locks until destruction? DrydockSlotLock::releaseLocks($lease->getPHID()); $lease->saveTransaction(); PhabricatorWorker::scheduleTask('DrydockLeaseDestroyWorker', array('leasePHID' => $lease->getPHID()), array('objectPHID' => $lease->getPHID())); $resource = $lease->getResource(); $blueprint = $resource->getBlueprint(); $blueprint->didReleaseLease($resource, $lease); }
/** * @task break */ protected function breakLease(DrydockLease $lease, Exception $ex) { switch ($lease->getStatus()) { case DrydockLeaseStatus::STATUS_BROKEN: case DrydockLeaseStatus::STATUS_RELEASED: case DrydockLeaseStatus::STATUS_DESTROYED: throw new PhutilProxyException(pht('Unexpected failure while destroying lease ("%s").', $lease->getPHID()), $ex); } $lease->setStatus(DrydockLeaseStatus::STATUS_BROKEN)->save(); $lease->logEvent(DrydockLeaseActivationFailureLogType::LOGCONST, array('class' => get_class($ex), 'message' => $ex->getMessage())); $lease->awakenTasks(); $this->queueTask(__CLASS__, array('leasePHID' => $lease->getPHID()), array('objectPHID' => $lease->getPHID())); throw new PhabricatorWorkerPermanentFailureException(pht('Permanent failure while activating lease ("%s"): %s', $lease->getPHID(), $ex->getMessage())); }