phacility/phabricator · error · PhutilArgumentUsageException
No enabled blueprints exist with a blueprint class that can
Error message
No enabled blueprints exist with a blueprint class that can plausibly allocate resources to satisfy the requested lease.
What it means
A PhutilArgumentUsageException from `bin/drydock lease`: at least one blueprint implementation class can allocate the lease (the check in error 557 passed), but a DrydockBlueprintQuery for enabled (non-disabled) blueprint instances of those classes returns nothing. In other words, the install has the capability in code but no enabled blueprint configured to provide it.
Source
Thrown at src/applications/drydock/management/DrydockManagementLeaseWorkflow.php:336
$impls = DrydockBlueprintImplementation::getAllForAllocatingLease($lease);
if (!$impls) {
throw new PhutilArgumentUsageException(
pht(
'No known blueprint class can ever allocate the specified '.
'lease. Check that the resource type is spelled correctly.'));
}
$classes = array_keys($impls);
$blueprints = id(new DrydockBlueprintQuery())
->setViewer($viewer)
->withBlueprintClasses($classes)
->withDisabled(false)
->execute();
if (!$blueprints) {
throw new PhutilArgumentUsageException(
pht(
'No enabled blueprints exist with a blueprint class that can '.
'plausibly allocate resources to satisfy the requested lease.'));
}
$phids = mpull($blueprints, 'getPHID');
if ($filter_blueprints) {
$allowed_map = array_fuse($phids);
$filter_map = mpull($filter_blueprints, null, 'getPHID');
foreach ($filter_map as $filter_phid => $blueprint) {
if (!isset($allowed_map[$filter_phid])) {
throw new PhutilArgumentUsageException(
pht(
'Specified blueprint "%s" is not capable of satisfying the '.
'configured lease.',
$blueprint->getBlueprintName()));View on GitHub (pinned to 5720a38cfe)
Solutions
- Create a blueprint of the required class: Drydock console > Blueprints > New Blueprint, pick the matching implementation type.
- If a matching blueprint exists but is disabled, re-enable it from the blueprint page.
- Re-run the lease command after the blueprint is enabled.
Defensive patterns
Strategy: validation
Validate before calling
$impls = DrydockBlueprintImplementation::getAllForAllocatingLease($probe);
$blueprints = id(new DrydockBlueprintQuery())
->setViewer($viewer)
->withBlueprintClasses(array_keys($impls))
->withDisabled(false)
->execute();
if (!$blueprints) {
throw new RuntimeException(
'No enabled blueprint provides this resource type; '.
'create or enable one in the Drydock console.');
} Prevention
- Include blueprint provisioning in environment setup scripts: assert at least one enabled blueprint exists per required resource type.
- When disabling blueprints for maintenance, expect lease acquisition for that type to fail and pause consumers.
When it happens
Trigger: `bin/drydock lease --type host` on a fresh install where no 'host' blueprint has been created yet, or where every host blueprint is disabled (withDisabled(false) filters them out).
Common situations: Fresh Drydock setup that has not created blueprints; all blueprints disabled during maintenance or after an incident; blueprint created but immediately disabled by an admin.
Related errors
- Blueprint "%s" could not be loaded. Try a blueprint ID or PH
- Blueprint "%s" is specified more than once (as "%s" and "%s"
- No known blueprint class can ever allocate the specified lea
- Specified blueprint "%s" is not capable of satisfying the co
- This blueprint ("%s") does not define any Almanac Service PH
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/5b1c396586d262bc.
Report an issue: GitHub.