Differential D14343 Diff 34628 src/applications/drydock/worker/DrydockRepositoryOperationUpdateWorker.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/drydock/worker/DrydockRepositoryOperationUpdateWorker.php
Show First 20 Lines • Show All 84 Lines • ▼ Show 20 Lines | final class DrydockRepositoryOperationUpdateWorker | ||||
private function loadWorkingCopyLease( | private function loadWorkingCopyLease( | ||||
DrydockRepositoryOperation $operation) { | DrydockRepositoryOperation $operation) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
// TODO: This is very similar to leasing in Harbormaster, maybe we can | // TODO: This is very similar to leasing in Harbormaster, maybe we can | ||||
// share some of the logic? | // share some of the logic? | ||||
$working_copy = new DrydockWorkingCopyBlueprintImplementation(); | |||||
$working_copy_type = $working_copy->getType(); | |||||
$lease_phid = $operation->getProperty('exec.leasePHID'); | $lease_phid = $operation->getProperty('exec.leasePHID'); | ||||
if ($lease_phid) { | if ($lease_phid) { | ||||
$lease = id(new DrydockLeaseQuery()) | $lease = id(new DrydockLeaseQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withPHIDs(array($lease_phid)) | ->withPHIDs(array($lease_phid)) | ||||
->executeOne(); | ->executeOne(); | ||||
if (!$lease) { | if (!$lease) { | ||||
throw new PhabricatorWorkerPermanentFailureException( | throw new PhabricatorWorkerPermanentFailureException( | ||||
pht( | pht( | ||||
'Lease "%s" could not be loaded.', | 'Lease "%s" could not be loaded.', | ||||
$lease_phid)); | $lease_phid)); | ||||
} | } | ||||
} else { | } else { | ||||
$working_copy_type = id(new DrydockWorkingCopyBlueprintImplementation()) | |||||
->getType(); | |||||
$repository = $operation->getRepository(); | $repository = $operation->getRepository(); | ||||
$allowed_phids = $repository->getAutomationBlueprintPHIDs(); | $allowed_phids = $repository->getAutomationBlueprintPHIDs(); | ||||
$authorizing_phid = $repository->getPHID(); | $authorizing_phid = $repository->getPHID(); | ||||
$lease = DrydockLease::initializeNewLease() | $lease = DrydockLease::initializeNewLease() | ||||
->setResourceType($working_copy_type) | ->setResourceType($working_copy_type) | ||||
->setOwnerPHID($operation->getPHID()) | ->setOwnerPHID($operation->getPHID()) | ||||
Show All 16 Lines | if ($lease_phid) { | ||||
$lease->queueForActivation(); | $lease->queueForActivation(); | ||||
} | } | ||||
if ($lease->isActivating()) { | if ($lease->isActivating()) { | ||||
throw new PhabricatorWorkerYieldException(15); | throw new PhabricatorWorkerYieldException(15); | ||||
} | } | ||||
if (!$lease->isActive()) { | if (!$lease->isActive()) { | ||||
$vcs_error = $working_copy->getWorkingCopyVCSError($lease); | |||||
if ($vcs_error) { | |||||
$operation | |||||
->setWorkingCopyVCSError($vcs_error) | |||||
->save(); | |||||
} | |||||
throw new PhabricatorWorkerPermanentFailureException( | throw new PhabricatorWorkerPermanentFailureException( | ||||
pht( | pht( | ||||
'Lease "%s" never activated.', | 'Lease "%s" never activated.', | ||||
$lease->getPHID())); | $lease->getPHID())); | ||||
} | } | ||||
return $lease; | return $lease; | ||||
} | } | ||||
Show All 31 Lines |