/**
  * Perform an actual resource allocation with a particular blueprint.
  *
  * @param DrydockBlueprint The blueprint to allocate a resource from.
  * @param DrydockLease Requested lease.
  * @return DrydockResource Allocated resource.
  * @task allocator
  */
 private function allocateResource(DrydockBlueprint $blueprint, DrydockLease $lease)
 {
     $resource = $blueprint->allocateResource($lease);
     $this->validateAllocatedResource($blueprint, $resource, $lease);
     // If this resource was allocated as a pending resource, queue a task to
     // activate it.
     if ($resource->getStatus() == DrydockResourceStatus::STATUS_PENDING) {
         PhabricatorWorker::scheduleTask('DrydockResourceUpdateWorker', array('resourcePHID' => $resource->getPHID()), array('objectPHID' => $resource->getPHID()));
     }
     return $resource;
 }